Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.24;
Скачать: CL | DM;

Вниз

Не кто не стаккивался с таким явлением...   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
4-1095856824
Vikont
2004-09-22 16:40
2004.10.24
Сканкоды


8-1091110319
kblc
2004-07-29 18:11
2004.10.24
Как одновременно проиграть два файла?


4-1095617644
Тимашов Костя
2004-09-19 22:14
2004.10.24
Windows


1-1097233522
JMasta
2004-10-08 15:05
2004.10.24
Наглядное хранение записей


14-1097047755
RDen
2004-10-06 11:29
2004.10.24
Иероглифы при копировании через буфер