![]() |
Delphi-Version: 11 Alexandria
Die AV, die es gar nicht gibt
Hi zusammen
Ich fürchte, ich habe eines meiner Testprogramme zum einen mit Delphi Alexandria geöffnet, um dann mit Sydney daran weiterzuarbeiten - anders kann ich mir nicht erklären, dass das Programm keinen weiteren Frame mehr akzeptiert (wo andere mehreredutzend oder hundert in ihren Programmen haben), sich die Codevervollständigung verabschiedete hat und das Programm bei F9 fürchterlich lange zum aufstarten braucht. Also hab ich damit begonnen, unter Verwendung des bestehenden Codes eine neue Anwendzung zu bauen. Die jetzt verwendeten Fremdkomponenten, Frames, Forms und Units tragen alle den Namen 'Alex' irgendwo im Namen, Methodenköpfe werden in Alexandria erzeugt. Vom bestehenden Programm werden gerade mal die lokalen Deklarationen und alles/das meiste zwischen begin und end inklusive übernommen. Das sieht im konkreten Fall zB. so aus: (alt)
Delphi-Quellcode:
und neu (Der Frame wurde nicht unter einem andern Namen gespeichrt, sondern von Null an neu aufgebaut):
constructor TOpenFileFrame.Create(AOwner: TComponent);
begin inherited; FReportlist := TStringlist.Create; FPopUpModeList:= TStringlist.Create; DisplayAllFiles; //<== Läuft problemlos durch FPathlist := TStringlist.Create; FPopUpItemList := TStringlist.Create; PnlLookOut.Align := alClient; FCmbxItem := False; FFileType := 'Alle Dateien'; FPopUpNode := NIL; NewPopUpItem; end;
Delphi-Quellcode:
AddNewNode schreibt die gefundenen Ordner und Dateien in ein Treeview - hier gerade mal die ersten Laufwerksbuchstaben (C:\ etc).
constructor TAlexOpenfileFrame.Create(AOwner: TComponent);
begin inherited; FReportlist := TStringlist.Create; FPopUpModeList:= TStringlist.Create; DisplayAllFiles; FPathlist := TStringlist.Create; FPopUpItemList := TStringlist.Create; PnlLookOut.Align := alClient; FCmbxItem := False; FFileType := 'Alle Dateien'; FPopUpNode := NIL; NewPopUpItem; end; procedure TAlexOpenfileFrame.DisplayAllFiles; // D: string; var Drives: TStringList; Drive, D: string; begin Drives := TStringlist.Create; try TDrives.ListDrivesAndNames(Drives); FReportlist.Add('--OpenFileFrame.ReportList--'); FReportlist.Add('--Start : --'); for Drive in Drives do begin D := Copy(Drive, 1, 3); AddNewNode(nil, Drive, Copy(Drive, 1, 3), true); // Zugriffsverletzung. Der Code ist genau der selbe wie vorher FReportlist.Add('procedure TOpenFileFrame.DisplayAllFiles'); FReportlist.Add(D); end; finally FreeAndNil(Drives); end; FileSearcherAlex1.SearchType := stBoth; FReportlist.Add('--procedure TOpenFileFrame.DisplayAllFiles;--'); Self.Zurcksetzen1.Enabled := False; end; In TOpenFileFrame läuft diese Prozedur seit Jahren problemlos ab. Eine Frameinstanz ist auf der Mainform vorhanden. Ich seh also keinen Grund für die AV. Was habe ich übersehen? Gruss Delbor |
AW: Die AV, die es gar nicht gibt
Hi zusammen
Zitat:
So auch hier mit der Prozedur AddNewNode. Ist die private, gibt es die für Aussenstehende nicht... Gruss Delbor |
AW: Die AV, die es gar nicht gibt
Wäre es nicht irgendwie gut, uns auch AddNewNode zu zeigen?
Ist es denn eine klassische Zugriffsverletzung mit c0000005 oder was anderes? Den textuellen Inhalt der aufpoppenden Messageboxen kann man per Strg + C kopieren und hier einfügen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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