Форум: "Потрепаться";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];
ВнизНе кто не стаккивался с таким явлением... Найти похожие ветки
← →
jack128 © (2004-10-05 17:27) [0]function ParseNextShortCircuitString(var f: Text; out ResultData: TResultData): boolean;
ResultData при входе в функцию не обнуляется.. А по идеи должно вроде как..
TPolarComplexRec = record
Module: Double;
Arg: Double;
end;
TResultData = record
ShortCircuit: TShortCircuitPoint; // класс
ShortCircuitKind: TShortCircuitKind; // перечисляемый тип
ClosedPhases: TClosedPhases; // перечисляемый тип
Element: TShemaElement; // Класс
// Код привидения, для которого расчитаны данные токи и напряжения
ReduceCode: TReduceCode; // Диапазон от Integer
// Токи прямой, обратной и нулевой посл-сти
DirectCurrent: TPolarComplexRec;
ReversCurrent: TPolarComplexRec;
NullCurrent: TPolarComplexRec;
// Напряжения прямой, обратной и нулевой посл-сти на обоих узлах
DirectVoltage: array [0..1] of TPolarComplexRec;
ReversVoltage: array [0..1] of TPolarComplexRec;
NullVoltage: array [0..1] of TPolarComplexRec;
// фазные токи и напряжения..
PhaseVoltage: array [0..1] of TPhaseComplexArray;
PhaseCurrent: TPhaseComplexArray; // стат массив записей TPolarComplexRec
end;
← →
han_malign © (2004-10-05 17:35) [1]>не обнуляется.. А по идеи должно вроде как..
- с какой это радости?
← →
jack128 © (2004-10-05 17:36) [2]забыл. Delphi5, SP1
← →
jack128 © (2004-10-05 17:38) [3]han_malign © (05.10.04 17:35) [1]
An out parameter, like a variable parameter, is passed by reference. With an out parameter, however, the initial value of the referenced variable is discarded by the routine it is passed to.
← →
Sandman25 © (2004-10-05 17:43) [4]discarded <> initialized
Что было, то и осталось
← →
jack128 © (2004-10-05 17:47) [5]Sandman25 © (05.10.04 17:43) [4]
Что было, то и осталось
Это не так
procedure Test(out s: string);
begin
ShowMessage(s); // пустая строка
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
s := "10";
Test(s);
end;
← →
Sandman25 © (2004-10-05 17:48) [6]Строка - особенный тип, с управляемым временем жизни.
Попробуйте с Integer, например.
← →
jack128 © (2004-10-05 17:53) [7]Sandman25 © (05.10.04 17:48) [6]
да, я уже попробывал. В общем out - примерно эквивалентен вызову Initialize перед вызовом функции...
Всем спасибо..
← →
han_malign © (2004-10-05 18:09) [8]>примерно эквивалентен вызову Initialize перед вызовом функции...
- наоборот
type
TR1 = record
_str: string;
end;
TR2 = record
_str: ShortString;
end;
procedure GetInfo1(out aVal: TR1);
begin
aVal._str:="test1";
end;
procedure GetInfo2(out aVal: TR2);
begin
aVal._str:="test2";
end;
procedure TestInfo;
var
r1: TR1;
r2: TR2;
asm
@@0: {stack frame start, has local variables}
@@9: lea eax, [ebp-$04]
@@12: mov edx, TR1
@@18: call System.@InitializeRecord
@@23: {try}
GetInfo1(r1);
@@37: mov edx, TR1
@@43: lea eax, [ebp-$04]
@@46: call System.@FinalizeRecord
@@51: call GetInfo1
Writeln(r1._str);
@@56: mov eax, dword ptr offset Output
@@61: mov edx, [ebp-$04]
@@64: call System.@Write0LString
@@69: call System.@WriteLn
@@74: call System.@_IOTest
GetInfo2(r2);
@@79: lea eax, [ebp-$104]
@@85: call GetInfo2
Writeln(r1._str);
@@90: mov eax, dword ptr offset Output
@@95: lea edx, [ebp-$104]
@@101: call System.@Write0String
@@106: call System.@WriteLn
@@111: call System.@_IOTest
@@116: {finally}
@@129: lea eax, [ebp-$04]
@@132: mov edx, TR1
@@138: call System.@FinalizeRecord
@@143: {end; finally}
@@151: {stack frame end}
end;
← →
jack128 © (2004-10-05 18:18) [9]han_malign © (05.10.04 18:09) [8]
угу. Не додумал.
← →
Cobalt © (2004-10-05 22:51) [10]2 han_malign © (05.10.04 18:09) [8]
а как это ты такGetInfo1(r1);
@@37: mov edx, TR1
@@43: lea eax, [ebp-$04]
@@46: call System.@FinalizeRecord
@@51: call GetInfo1
Скопировал из Дельфей, или...?
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.024 c