Найдено 6 результатов

S!V
23.03.2008 15:21:29
Форум: Free Pascal Compiler
Тема: Возврат результата через out-параметр
Ответы: 11
Просмотры: 9529


В варианте с out ответственность переходит с компилятора на тебя: если внутри ф-ции читать v1 после записи в result, получишь неверный результат, и компилятор с этим ничего не поделает.

Замени v1:=v1+v2 на v:=v1+v2 (v - еще одна переменная типа TVec4f), и оба теста выдадут одинаковые результаты ...
S!V
21.03.2008 23:46:43
Форум: Free Pascal Compiler
Тема: Возврат результата через out-параметр
Ответы: 11
Просмотры: 9529

Re: Возврат результата через out-параметр

Не переделывая код - вряд ли. В следующей версии FPC - вполне возможно, что поправят.

ps. Собственными руками делал нечто похожее, только для строк. Само исправление - ровно три строки, зато потом три месяца глюки вылавливал, в процессе чего пришлось переписать несколько сотен строк ...
S!V
12.03.2008 22:19:08
Форум: Free Pascal Compiler
Тема: Возврат результата через out-параметр
Ответы: 11
Просмотры: 9529

Возврат результата через out-параметр

Здравствуйте. Спрошу вашего совета.
Только сейчас заметил небольшую особенность. Следующая процедура
type TVec4 = array[0..3] of Single;
procedure VAdd(const v1,v2 :TVec4; out Result :TVec4);
begin
Result[0] := v1[0]+v2[0];
Result&#91 ...
S!V
13.12.2006 11:54:08
Форум: Free Pascal Compiler
Тема: Как получить значение поля экземпляра класса в ASMе?
Ответы: 1
Просмотры: 3370

Вот ступил...

такой код работает:
mov edx,self

Извините за беспокойство :)
S!V
12.12.2006 22:21:21
Форум: Free Pascal Compiler
Тема: Как получить значение поля экземпляра класса в ASMе?
Ответы: 1
Просмотры: 3370

Как получить значение поля экземпляра класса в ASMе?

Вот:

В дельфях работало такое:

procedure TMyClass.something;
begin
{...}
asm
mov edx,[self]
mov ecx,[edx+fField]
end;
{...}
end;


После этого в ecx было значение fField. FPC же ругается, говорит "неизвестный ...
S!V
08.11.2006 13:42:13
Форум: Lazarus
Тема: работа классов в Lazarus
Ответы: 5
Просмотры: 6597

MyTest - указатель на экземпляр класса MyClass.
Он(экземпляр) у тебя не создаётся.
Правильней было бы:

Код: Выделить всё

var
  MyTest :MyClass;
begin
  MyTest := MyClass.create;
  MyTest.mm := 1;
  MyTest.Free;
end;


И ешё, в именах типов принято ставить первую 'T' (TMyClass, например).