Помощь новичкам


#1358

Сделайте проще: посмотрите на PABCSystem.pas. Он является примером чисто .NET кода. Я не вижу проблемы в использовании .NET. Про Integer ещё согласен. Тема по обновлениям будет. Оформление кода также исправлю.


#1359

Вы мне или @RAlex (хотя, подозреваю, что не мне)?


#1360

Не Вам. С Вами я полностью согласен, за исключением случая с then.


#1361

Если под средствами имеются ввиду стандартные модули, то они немногочисленны и не могут дать весь функционал, который предоставляет .Net Framework. Смешивать средства, предоставляемые стандартными модулями, со средствами .Net Framework - хорошее решение. Отказываться от стандартных модулей, что называется на отрез, не стоит, так как они предназначены в некотором смысле для упрощения кода. Но, в то же время пользоваться исключительно ими - плохой вариант, так как существует широкий круг задач, которые им не под силу.


#1362

Вам удобней писать then на отдельной строке? Если да, то почему?


#1363

Мне лично так читать проще.


#1364
 begin
      View3D.Title := 'мисли'; 
      var шарик := Sphere((1 * 2), 0, 0, 1);                
      Graph3D.OnMouseDown += procedure (x, y, mb) -> begin
       объект3Д := FindNearestObject(x, y);                
        if объект3Д = шарик then
        begin
        
        end;
        объект3Д := nil; 
      end;
      
    end;  

елки палки, вырезал половину кода, убрал 5ти мерные массивы, существенно все оптимизировал и упростил. Но вот это место в 3д все равно тормазит при клике мышью на шарик! ??? что тут не так-то?


#1365

Ваш код не компилируется, хотя бы потому что:

  1. Отсутствует uses Graph3D.
  2. ; после последнего end, вместо .
  3. объект3Д := FindNearestObject(x, y); - нет var.

Рабочая (компилируется) версия:

uses Graph3D;
begin
  View3D.Title := 'мисли'; 
  var шарик := Sphere((1 * 2), 0, 0, 1);                
  Graph3D.OnMouseDown += procedure (x, y, mb) -> begin
    var объект3Д := FindNearestObject(x, y);                
    if объект3Д = шарик then
    begin
    end;
    объект3Д := nil; 
  end;
end.

. Не это ли Вам нужно (удаление шарика):

uses Graph3D;
begin
  View3D.Title := 'мисли'; 
  var шарик := Sphere((1 * 2), 0, 0, 1);                
  Graph3D.OnMouseDown += procedure (x, y, mb) -> begin
    var объект3Д := FindNearestObject(x, y);                
    if объект3Д = шарик then
      шарик.Destroy(); 
  end;
end.

?


#1366

о спасибо, это тоже пригодиться.

Сам код это кусок программы, просто может я что-то не так делаю, почему он так тормозит? комп виноват? или накосячил где-то и в упор не вижу? Может опрос мышки не правильный?

если несколько раз по шарику покликать вообще иногда зависает.


#1367

У меня не тормозит. Я не знаю характеристик Вашего компьютера, чтобы сказать почему.


#1368

ИИ_0_11.pas (24,2 КБ)

Попробуйте это запустить, и несколько раз кликните, (может и правда у меня комп. древний уже)


#1369

Код не запустится, так как есть ошибки. Например, подключайте сборку до того, как использовать требуемое пространство имён:

{$Reference 'System.Windows.Forms.dll'}

. После исправления этой ошибки код компилируется и запускается.


#1370

хмм странно у меня запускается, может у меня ошибки не учитывает?? переустановить паскаль нужно?


#1371

Можете объяснить что нужно в программе делать?


#1372

там ничего, я вырезал из неё почти все. Буду без таких больших массивов делать, почти заново. а так цель… программа получая на входе данные и требуемый результат - должна будет писать программки для виртуальной среды, которые будут находить подходящие алгоритмы, комбинировать их и выдавать ответы. например вводим 2 и 3 в ответ записываем 5 программа должна построить программу а + б и т.д.


#1373

Здравствуйте, хотелось бы узнать в чем особенность языка F#, допустим, в сравнении с тем самым С#, для чего он создан?


#1374

Для функционального программирования, а не императивного.


#1375

Основа одна (.NET) и можно сочетать, но если вкратце, то разница C# -vs- F$


#1376

А попробуйте не использовать метод для вычисления индекса, и убедитесь что компилируете Release версию.

А так, в принципе, скорость чтения должна зависить от типа носителя. К примеру, на диске вроде разница должна быть ещё больше. Я в железе не сильно разбираюсь, но и платы оперативной памяти должны быть разные.

Я бы не был так уверен, со вложенными циклами и вызовом метода. Почитайте ещё разок эту статью, поищите про это. У меня руки ещё не дошли всю изучить.


#1377

Бред пишут. IntPtr это тип, который принимает разный вид в зависимости от платформы. На 32-битной системе - он занимает 32 бита, а 64-битной - 64 бита. Это, как сказал @Gleb (хотя не до конца), нужно для вызова кода написанного на C++, без потерь информации/производительности.

Более того:

begin
  var i: System.IntPtr;
  var p: pointer;
  
  p := i.ToPointer;
  i := new System.IntPtr(p);
end.

По моему это надо куда то отдельно вынести наконец, потому что каждый раз просто перестают обсуждать.
Ну а лично я - считаю что действительно, бывают не самые адекватные просьбы добавить что то в язык, и @RAlex прав, в том что говорит об этом. Но всё же, @RAlex, давайте больше по делу и меньше “Всё что вы просите только захламит язык, это глупо и бесполезно” к практически каждому предложению добавить что то в язык.