Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi AV beim Schließen des Fensters (https://www.delphipraxis.net/36092-av-beim-schliessen-des-fensters.html)

Luckie 15. Dez 2004 19:35


AV beim Schließen des Fensters
 
Noch ein letztes Problem. Ich habe folgenden Code:
Delphi-Quellcode:
type
  TThreadParams = packed record
    cntFileLists: Integer;
    DriveArray: TStringDynArray;
    Filter: ShortString;
    Listview: TListView;
  end;
  PThreadParams = ^TThreadParams;

[..]

procedure TForm1.btnFindClick(Sender: TObject);
var
  i           : Integer;
  cnt         : Integer;
  DriveArray  : TStringDynArray;
  Index       : Integer;
  FindFilesParams: PThreadParams;
  ThreadID    : Cardinal;
begin
  lvFiles.Items.Clear;
  cnt := 0;
  SetLength(FileList, 0);
  StatusBar1.SimpleText := rsDoSearch;
  // für jedes ausgewählte Laufwerk eine Dateiliste
  for i := 0 to lstDrives.Items.Count - 1 do
  begin
    if lstDrives.Checked[i] then
    begin
      Inc(cnt);
    end;
  end;
  SetLength(FileList, cnt);
  SetLength(DriveArray, cnt);

  // alle Laufwerksbuchstaben in eine Liste eintragen
  Index := 0;
  for i := 0 to lstDrives.Items.Count - 1 do
  begin
    if lstDrives.Checked[i] then
    begin
      DriveArray[Index] := lstDrives.Items.Strings[i];
      Inc(Index);
    end;
  end;

  // Thread starten
  GetMem(FindFilesParams, sizeof(TThreadParams));
  FindFilesParams.cntFileLists := cnt;
  GetMem(FindFilesParams.DriveArray, cnt); // <-- !!
  FindFilesParams.DriveArray := DriveArray;
  FindFilesParams.Filter := edtFilter.Text;
  FindFilesParams.Listview := lvFiles;
  CloseHandle(BeginThread(nil, 0, @FindFilesThread, FindFilesParams, 0, ThreadID));

  StatusBar1.SimpleText := Format(rsFilesCount, [lvFiles.Items.Count]);
end;
In dem Record habe ich ein dynamisches Array für das ich Speicher alloziieren muss. Dies geschieht in der markierten Zeile. So weit so gut. Nur bekomme ich eine AV, wenn ich das Fenster schließe. Kommentiere ich die Zeile aus, bekomme ich eine AV wenn ich den Button klicke, aber nicht beim Schließen. Daraus schließe ich, dass es an dieser Zeile liegen muss. Nur warum? Im OnClose oder OnDestroy habe ich keinen Code mehr.

Luckie 15. Dez 2004 20:28

Re: AV beim Schließen des Fensters
 
Bin einen anderen Weg gegangen. Jetzt geht es.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz