AGB  ·  Datenschutz  ·  Impressum  







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

Die unerklärliche AV

Ein Thema von Delbor · begonnen am 9. Feb 2018 · letzter Beitrag vom 11. Feb 2018
Antwort Antwort
Seite 1 von 2  1 2      
Delbor

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

Die unerklärliche AV

  Alt 9. Feb 2018, 12:19
Delphi-Version: XE8
Hi zusammen

Soeben habe ich meinem Projekt eine weitere Listbox hinzugefügt, um darauf Ausgaben über den Codeverlauf zu machen. Delphis Reaktion:
Zitat:
---------------------------
Im Projekt PDFOfficerProject.exe ist eine Exception der Klasse $C0000005 mit der Meldung 'access violation at 0x0063f592: read of address 0x000002a0' aufgetreten.
---------------------------
Klar, das angesprochene Objekt, die soeben aus der Toolbox eingefüge Listbox2, ist nil. Deren Parents sind schon länger Teil des Projektes. Tönt so, als hätte Delphi ein Burnout...
Der Code, in der die AV ausgelöst wird:

Delphi-Quellcode:
begin
  Node := TVPathExplorer.Items.AddChild(ParentNode, aCaption);
  PDFOfficerMain.ListBox1.Items.Add('aRealName := ' + aRealName); //Listbox1 funkttioniert schon länger
  PDFOfficerMain.ListBox1.Items.Add('aCaption := ' + aCaption);
  BCaption := ExtractFileExt(aCaption);
  PDFOfficerMain.ListBox1.Items.Add('ExtractFileExt := '+ BCaption);
  Application.ProcessMessages;
  if CanGetChildren then
  begin
    FDefaultdraw := False;
    FIsDirectory := True;
    Node.ImageIndex := 1;
    Node.SelectedIndex := 1;
    (* Dummy-Knoten anlegen *)
    TVPathExplorer.Items.AddChild(Node, 'dummy');
    PDFOfficerMain.ListBox2.Items.Add('procedure TPathFinderFrame.AddNewNode'); /Listbox2 ist nil
    PDFOfficerMain.ListBox2.Items.Add('CanGetChildren := True');
    PDFOfficerMain.ListBox2.Items.Add('');
  end
Beide Listboxen wurden aus dem OI heraus gesetzt. Was ist da los?

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 unerklärliche AV

  Alt 9. Feb 2018, 13:49
Hi zusammen

Aktionen von mir:
  • Löschen der ominösen Listbox2
  • Delphi neu starten
  • Effekt := 0

Weiter:
  • Löschen der ominösen Listbox2
  • Listbox1 auschneiden und an der Stelle der ehemaligen Listbox2 einfügen
  • Effekt: AV beim ansprechen von Listbox1 (NIL)

Der Anhang zeigt meine Strukturen der Gui.

Gruss
Delbor
Miniaturansicht angehängter Grafiken
14_43_23-struktur.jpg  
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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#3

AW: Die unerklärliche AV

  Alt 9. Feb 2018, 14:03
Was hindert dich daran, mal im Debugger in der Codezeile zur Exception nachzusehn ob da irgendwo das böse NIL zu sehen ist?
[edit] grade das fast versteckte /Listbox2 ist nil entdeckt.

Heißt nur die Varaible/Feld so in der PDFOfficerMain, aber in der DFM/OI heißt die Komponente anders?

Oder wurde Listbox2 zur Programmlaufzeit umbenannt oder vielleicht doch freigegeben?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Feb 2018 um 14:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Die unerklärliche AV

  Alt 9. Feb 2018, 14:06
Du verwendest nicht zufällig eine with do begin Konstruktion irgendwo?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Delbor

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

AW: Die unerklärliche AV

  Alt 9. Feb 2018, 16:02
Hi zusammen

Vielen Dank für eure Antworten!
Heißt nur die Varaible/Feld so in der PDFOfficerMain, aber in der DFM/OI heißt die Komponente anders?
Zumindest im OI heisst sie so, und demnach wohl auch in der DFM - denn da kommen dieDaten der Strukturansicht wohl her.

Oder wurde Listbox2 zur Programmlaufzeit umbenannt oder vielleicht doch freigegeben?
Nein, wurde sie nicht.

@Luckie: Hab ich mir schon vor längerem abgewöhnt...

Aber nach dem Mittagsschläfchen (um vier Uhr ) fiel mir ein, was ich nicht gecheckt habe: nämlich enabled des Parentpanels. Ich mag mich nebulös erinnern, dass ichs schon mal geschafft habe, sowas unbeabsichtigt zu ändern.

...
Soeben nachgeholt - das Ergebnis seht ihr im Anhang...

Grrr....Seit wann kann Delphi denn ein Burnout haben???

Gruss
Delbor
Miniaturansicht angehängter Grafiken
16_55_36-objektinspektor.jpg  
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor ( 9. Feb 2018 um 16:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Die unerklärliche AV

  Alt 9. Feb 2018, 16:27
Hast du möglicherweise Lokalisierungen die nicht aktualisiert wurden? Da stecken auch die dfm resourcen drin und wenn da noch nicht die ListBox2 drin ist, wird sie beim dfm streamen nicht erstellt und demnach bleibt das ListBox2 Feld nil.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#7

AW: Die unerklärliche AV

  Alt 9. Feb 2018, 16:33
Im Screenshot zu Post 2 ist ListBox2 nicht enthalten, sie soll aber doch auch auf Panel7 liegen?

Enabled sollte eigentlich keinen Auswirkungen auf die Zugriffsmöglichkeiten im Programmcode haben, enabled wirkt sich nur auf die Bedienbarkeit durch den Anwender aus.

Irgendwo muss es die ListBox2 geben, sonst würde der Compiler meckern.
Das eine auf 'nem Formular liegende Komponente Nil ist, ist eher ungewöhnlich.

Könnten wir bitte mal die DFM und die PAS vollständig zu gesicht bekommen. Da muss irgendwo was ungewöhnliches passieren, das man ohne den vollständigen Quelltext höchstwahrscheinlich nicht finden kann.

Alternativ:

Ist irgendwo unterhalb von type TPDFOfficerMain = class(TForm) die ListBox2 zu finden?
Wenn ja, ist sie auch in der DFM zu finden?
Wenn sie in der DFM fehlen sollte, wird sie nicht automatisch erstellt und bleibt daher Nil.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#8

AW: Die unerklärliche AV

  Alt 9. Feb 2018, 17:24
Irgendwo muss es die ListBox2 geben, sonst würde der Compiler meckern.
Nein, da es das Feld gibt, meckert der Compiler nicht.
Aber in dem Feld ist einfach keine Referenz gespeichert.

Die VCL/FMX setzen in ihrem Owner die gleichnamige Variable, die so wie sie heißt.
Alle Komponenten im Formdesigner haben die Form als Owner.

Wie sieht die Definition von PDFOfficerMain aus?
Das Feld "Listbox2" muß natürlich published sein, sonst geht das automatische Setzen nicht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Delbor

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

AW: Die unerklärliche AV

  Alt 9. Feb 2018, 17:33
Hi zusammen

@Delphi.Narium: Die Strukturansicht in Post2 zeigt die Situation, nachdem ich Listbox2 entfernt hatte und durch Listbox1 ersetzt hatte - und prompt war es dann auch diese, die in dieser Konstellation die AV auslöste.

Im Anhang nun mal einige jpeg- und pas-Dateien mit der kompletten DFM, bzw Formularansichten zur Lauf- und Designtime. Aussserdem ist eine kleinere pas dabei, die nur die aktuelle AddNewNode-prozedure zeigt, die einige auskommentierte Zeilen enthält, die von meinen Versuchen stammen.

Gruss
Delbor
Miniaturansicht angehängter Grafiken
17_55_31-pdfofficerproject-delphi-xe8-pathfinderframeunit-%5Bwird-ausgefuehrt%5D.jpg   18_08_44-pdfofficermainunit.pas-zur-designzeit.jpg  
Angehängte Dateien
Dateityp: pas PDFOfficermainDFM.pas (28,1 KB, 7x aufgerufen)
Dateityp: pas PathFinderFrameAddNewNode.pas (2,0 KB, 7x aufgerufen)
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
 
#10

AW: Die unerklärliche AV

  Alt 9. Feb 2018, 17:42
Hi zusammen

Irgendwo muss es die ListBox2 geben, sonst würde der Compiler meckern.
Nein, da es das Feld gibt, meckert der Compiler nicht.
Aber in dem Feld ist einfach keine Referenz gespeichert.

Die VCL/FMX setzen in ihrem Owner die gleichnamige Variable, die so wie sie heißt.
Alle Komponenten im Formdesigner haben die Form als Owner.

Wie sieht die Definition von PDFOfficerMain aus?
Das Feld "Listbox2" muß natürlich published sein, sonst geht das automatische Setzen nicht.
Ein ausschnitt aus der Mainform-Deklaration:
Delphi-Quellcode:
type
  TPDFOfficerMain = class(TForm)
    PnlToolBox: TPanel;
    CategoryPanelGroup1: TCategoryPanelGroup;
 ...
    Panel7: TPanel;
    ListBox1: TListBox;
    ListBox2: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure TVNameMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
Ansonsten findet sich die komplette pas im Anhang meines letzten posts.

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
Antwort Antwort
Seite 1 von 2  1 2      


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 18:58 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