AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Die AV, die es gar nicht gibt

Ein Thema von Delbor · begonnen am 20. Feb 2022 · letzter Beitrag vom 21. Feb 2022
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Die AV, die es gar nicht gibt

  Alt 20. Feb 2022, 15:28
Delphi-Version: 11 Alexandria
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:
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;
und neu (Der Frame wurde nicht unter einem andern Namen gespeichrt, sondern von Null an neu aufgebaut):
Delphi-Quellcode:
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;
AddNewNode schreibt die gefundenen Ordner und Dateien in ein Treeview - hier gerade mal die ersten Laufwerksbuchstaben (C:\ etc).
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
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Die AV, die es gar nicht gibt

  Alt 20. Feb 2022, 16:40
Hi zusammen
Hi zusammen
Was habe ich übersehen?
Oft kopiere ich auch die komplette Prozedur vom Vorgänger, passe den neuen Klasssennamen an und deklariere die Prozedure mit der Tastenkombination <Shift-Control-C>. Aber anders als beim Refactoring fragt Delphi nicht per Dialog nach, wo deklariert werden soll, sondern 'schmeisst' den Kram einfach nach Private.
So auch hier mit der Prozedur AddNewNode. Ist die private, gibt es die für Aussenstehende nicht...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Die AV, die es gar nicht gibt

  Alt 21. Feb 2022, 08:21
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz