• TUser © (16.09.05 13:30) [0]
    Не пойму, что такое случилось.

    type
     TMyArray = array of
      record
       Field1: integer;
       ...
      end;

    procedure MyProc (FileName: string; var _result: TMyArray);

    var ResultCount: integer;
    function NewElement: integer;
    begin
      if ResultCount = length(_result) then
        SetLength(_result,ResultCount+64);
      inc(ResultCount);
      result:=ResultCount-1;
      writeln ('new = '+inttostr(result)+'; len = '+inttostr(length(_result)));
    end;

    var SL: TStringList;
       i: integer;
    begin
     SetLength(_result,0);
     ResultCount:=0;
     try
      SL:=TStringList.Create;
      try

       SL.LoadFromFile(FileName);
       for i:=0 to SL.Count-1 do begin
         if <некоторое условие на SL[i]> then
           with _result[NewElement] do begin
              writeln (':');
             Field1:=152;
             writeln ('.');
             ...




    т.е. читаю файл, для нужных мне строчек создаю элемент в дин. массиве. NewElement возвращает номер элемента. При попытке присвоить значение одному из полей (любому) самой первой записи - получаю AV (на выделенной строчке).

    F:\BioProg\Waque>waque.exe -d 1500 -c 80 allwithwat_enh.ent
    nw = 0; len = 64 // все правильно - элемент создан
    :
    Access violation



    Смущает то, что Delphi 7.0 дает нормально работающюю программу. И FreePascal (2.0.0) вчера все нормально делал, а сегодня с утра бастует :) FileName - один и тот же файл. Компилирую с опциями
    -O -Mdelphi

    .
  • TUser © (16.09.05 13:39) [1]
    Забыл сказать, что если писать

    procedure NewElement;
    begin
      // тот же код
    end;

    begin
     if ... then begin
       NewElement;
       with _result[ResultCount-1] do begin
          ...
     end;
    end;

    тогда все в пороядке.
  • Иван Шихалев © (21.09.05 04:31) [2]
    -O


    Это что за опция?
  • Saemon Zixel (27.09.05 00:41) [3]
    -O<x>  optimizations:
         -Og        generate smaller code
         -Or        keep certain variables in registers
         -Ou        enable uncertain optimizations (see docs)
         -O1        level 1 optimizations (quick optimizations)
         -O2        level 2 optimizations (-O1 + slower optimizations)
         -O3        level 3 optimizations (-O2 repeatedly, max 5 times)
         -Op<x>     target processor:
            -Op1       set target processor to 386/486
            -Op2       set target processor to Pentium/PentiumMMX (tm)
            -Op3       set target processor to PPro/PII/c6x86/K6 (tm)
    PS fpc ;)
  • Иван Шихалев © (27.09.05 04:09) [4]
    -O<x>

    я знаю. А вот что такое
    -O

    ...
  • Saemon Zixel (28.09.05 00:43) [5]
    Наверное оптимизация по умалчанию
  • TUser © (30.09.05 11:05) [6]
    > Наверное оптимизация по умалчанию

    Да нет, просто описка.
    -O2
Есть новые Нет новых   [134428   +40][b:0][p:0.001]