AGB  ·  Datenschutz  ·  Impressum  







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

Gleiche Variablen-Namen

Ein Thema von Delbor · begonnen am 8. Mai 2017 · letzter Beitrag vom 10. Mai 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.441 Beiträge
 
Delphi 12 Athens
 
#1

AW: Gleiche Variablen-Namen

  Alt 9. Mai 2017, 17:03
Hänge das Testprojekt mal an... Bevor wir weiter raten.

Ich tippe darauf das beim Absenden des Events FPathlist: TStringList (das F kommt aus dem Original) nil (0x0000007c) ist.

Wo erzeugst du die FPathlist: TStringList Instanz?

Geändert von haentschman ( 9. Mai 2017 um 17:06 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Gleiche Variablen-Namen

  Alt 9. Mai 2017, 17:06
Ich tippe darauf das beim Absenden des Events FPathlist: TStringList (das F kommt aus dem Original) nil (0x0000007c) ist.
Wenn das Objekt nil ist, dann wäre die Adresse eher 0x00000000. Ich kann mich aber auch täuschen. Nur kenne ich es nur so, dass die Adresse dann 0x00000000 wäre.

EDIT: @Delbor: Hast du meinen Post #40 gesehen. Dort habe ich mal ein Minimalbeispiel gemacht, wie so ein Event erstellt werden kann.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.441 Beiträge
 
Delphi 12 Athens
 
#3

AW: Gleiche Variablen-Namen

  Alt 9. Mai 2017, 17:14
Hallöle...
Zitat:
Wenn das Objekt nil ist, dann wäre die Adresse eher 0x00000000.
Zitat:
Ich kann mich aber auch täuschen
...ist leider so. Auch wenn das Objekt nil ist kannst du auch Adressen > 0 haben. In der Regel sind aber die Adressen im niedrigem 2 stelligem Bereich.
Angehängte Grafiken
Dateityp: png AV1.png (4,7 KB, 7x aufgerufen)
Dateityp: png AV.png (22,7 KB, 7x aufgerufen)

Geändert von haentschman ( 9. Mai 2017 um 17:17 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Gleiche Variablen-Namen

  Alt 9. Mai 2017, 17:21
Hallöle...
Zitat:
Wenn das Objekt nil ist, dann wäre die Adresse eher 0x00000000.
Zitat:
Ich kann mich aber auch täuschen
...ist leider so. Auch wenn das Objekt nil ist kannst du auch Adressen > 0 haben. In der Regel sind aber die Adressen im niedrigem 2 stelligem Bereich.
Ja ok. In deinem Fall (Screenshot) ist es allerdings ein nicht initialisiertes Objekt. Eine Variable, der explizit nil zugewiesen wurde, ist eigentlich immer an 0x00000000. Aber es kann ja gut sein, dass es bei ihm auch so ist.

Einigen wir uns einfach auf eine nicht (mehr) existierende Objekt Instanz bzw. einen dangling Pointer.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.441 Beiträge
 
Delphi 12 Athens
 
#5

AW: Gleiche Variablen-Namen

  Alt 9. Mai 2017, 17:25

Zitat:
dem explizit nil zugewiesen wurde, .... Aber es kann ja gut sein, dass es bei ihm auch so ist.
... da tippe ich auch drauf. Solange wir den QT nicht gesehen haben ist alles nur raten.
Zitat:
Einigen wir uns einfach auf eine nicht (mehr) existierende Objekt Instanz bzw. einen dangling Pointer.
... jawoll ja.
  Mit Zitat antworten Zitat
Delbor

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

AW: Gleiche Variablen-Namen

  Alt 9. Mai 2017, 17:26
Hi Aviator

Ja, den hab ich gesehen, zwar erst kürzlich, aber...
Und eigentlich machst du da genau das, was ich versucht habe: Im Eventhandler einen andern Bezeichner verwenden, als bei der Tip-Deklaration. Wobei ich gerade sehe, dass du die abweichenden Variablen schon beim abfeuern verwendest; jene im Eventhandler sind eigentlich schon die zweite abweichende Variablengruppe, da sie anderswo deklariert sind.

Delphi-Quellcode:
TMyEvent = procedure(Street: string; Country: string) of object;
...
   if Assigned(FOnReport) then
     FOnReport(tmpStreet, tmpCountry); // Hier wird das Event ausgelöst
...
 // EventHandler für TMyClass.OnReport
 // Hier könnten die Parameter Bezeichner sogar schon von der Event-Deklaration abweichen
 // Wichtig sind die Datentypen. Die müssen in Reihenfolge und Typ mit der Event-Deklaration übereinstimmen
 procedure TForm1.ReportHandler(Street: string; Country: string);
 begin
   ShowMessage(Street + sLineBreak + Country);
 end;
Und das entspricht meinen Deklarationen.

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
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.441 Beiträge
 
Delphi 12 Athens
 
#7

AW: Gleiche Variablen-Namen

  Alt 9. Mai 2017, 17:29
Zitat:
Und das entspricht meinen Deklarationen.
...das ist ja auch nicht die Ursache. Du übergibst dem Event eine Liste die NIL ist.

Bitte hänge den QT an. Sonst sind wir in 10 Seiten noch nicht fertig. Bitte... wenigstens die 2 Units mit dem Eventhander und dem Event.

Geändert von haentschman ( 9. Mai 2017 um 17:33 Uhr)
  Mit Zitat antworten Zitat
Delbor

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

AW: Gleiche Variablen-Namen

  Alt 9. Mai 2017, 17:40
Hi Haentschman

Im Anhang die drei pas-Dateien. Ursprünglich hatte ich den Eventhandler in der Mainform. Aber wenn damit keine Gui-Ausgabe erfolgt, gehört er da eigentlich nicht hin.

Gruss
Delbor
Angehängte Dateien
Dateityp: pas DMLSQLiteUnit.pas (1,7 KB, 2x aufgerufen)
Dateityp: pas PathFinderFrameUnit.pas (7,3 KB, 3x aufgerufen)
Dateityp: pas SQLiteTestMainUnit.pas (4,0 KB, 2x 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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.660 Beiträge
 
Delphi 12 Athens
 
#9

AW: Gleiche Variablen-Namen

  Alt 9. Mai 2017, 17:48
Es gibt jetzt in DMLSQLiteUnit eine FPathList, in PathFinderFrameUnit noch eine und zusätzlich nochmal als Parameter. Die einzige wirklich erzeugte Instanz ist die in DMLSQLiteUnit, aber die wird nirgends benutzt. Wie war das nochmal mit dem Stift und dem Papier?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Delbor

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

AW: Gleiche Variablen-Namen

  Alt 9. Mai 2017, 18:06
Hi DeddyH
Wie kommst du darauf, dass die einzige Instanz der Liste im Datenmodul erzeugt wird?
Delphi-Quellcode:
constructor TPathFinderFrame.Create(AOwner: TComponent);
  var RGindex, L: integer; Drive, D: string;
      Drives: TStringlist;
begin
  inherited;
  Drives := TStringlist.Create;
  try
    TDrives.ListDrivesAndNames(Drives);
    for Drive in Drives do
    begin
      D := Copy(Drive, 1, 3);
      AddNewNode(nil, Drive, Copy(Drive, 1, 3), true);
      FReportlist.Add(D);
    end;
  finally
    FreeAndNil(Drives);
  end;
  FReportlist.Add('----');
  FileSearcher1.SearchType := stBoth;
  FPathlist := TStringlist.Create; //<<====
  RGindex := 0;
  FFileType := InitFileType(RGindex);
  L := CmbxFileType.Items.IndexOf(FFileType);
  if L <> -1 then
    CmbxFileType.Text := CmbxFileType.Items[L];
  if CmbxFileType.Items.IndexOf(FFileType) > -1 then
    CmbxFileType.Text := CmbxFileType.Items[CmbxFileType.Items.IndexOf(FFileType)];
  FCmbxItem := False;

end;
Die Pathlist des Datenmoduls habe ich erst kürzlich eingefügt. Eben, weil ich mir die Fehlermeldungen nicht erklären konnte. Angedacht war eigentlich nur FFilelist.

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 05:04 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