Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
9-1087322906
Dextor
2004-06-15 22:08
2004.10.24
Стратегия. Движение объекта.


4-1095848030
Laymer
2004-09-22 14:13
2004.10.24
Завершения сеанса


14-1096704951
VID
2004-10-02 12:15
2004.10.24
Почему система тормозит при копировании с CD ?


1-1097240170
Chlavik
2004-10-08 16:56
2004.10.24
Как проверить В Delphi Olevarint на "Nothing" ?


6-1092437337
Jetus
2004-08-14 02:48
2004.10.24
Получение почты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский