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

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

AW: Gleiche Variablen-Namen

  Alt 9. Mai 2017, 18:29
Hallöle...

1. Verabschiede dich von den 2 Instanzen.
2. Die File Liste sollte da liegen wo das Event ausgelöst wird. Der Frame wird gefragt...der Frame anwortet über ein Event.
3. Das Event gibt nur einer raus. Das andere sind Prozeduren der Datamodule die die Informationen nacheinander bekommen. (Self und DMLSQLiteUnit)
4. Die Units müssen sich nicht alle gleichzeitig kennen. Die Main Unit sollte die einzige sein die alle kennt. Die Unit(TPathFinderFrame) gibt nur das Event raus fertsch... Wohin ist dem Frame wurscht. usw... Nimm mal die Units aus der uses implmentation in den interface Teil. Da siehst du die zirkulären Referenzen.

Die Fehler: (keine Garantie für Vollständigkeit)
Delphi-Quellcode:
  private{ Private-Deklarationen }
    FFileList: TStringlist;
    //FPathlist: TStringlist; wird nun im Frame instanziert ... nur eine Instanz!
  public{ Public-Deklarationen }
    procedure FillPathList(Sender: TObject; const Ordner: String; const Pathlist: TStringList);
    // Sender ist nicht nötig aber nicht falsch // besserer Name (Funktion) wegen der Unterscheidung
  end;

procedure TDMLSQLite.DataModuleCreate(Sender: TObject);
begin
  FFileList := TStringlist.Create;
  //FPathlist := TStringlist.Create;
end;

procedure TDMLSQLite.DataModuleDestroy(Sender: TObject);
begin
  FFileList.Free;
  //FPathlist.Free;
end;

procedure TDMLSQLite.FillPathList(Sender: TObject; const Ordner: String; const Pathlist: TStringList); // Das F kann weg!
begin
// FFileList.AddStrings (FPathlist);
  // SQLiteTestMain.LBxPathlist.Items.AddStrings(FPathlist); // wird im Eventhandler erledigt
end;
Delphi-Quellcode:
TPathListEvent = procedure(Sender:TObject; const Ordner: String; const Pathlist: TStringList) of Object; // das F kann weg
...
  private // !!!!
    FPathlist: TStringlist;
  ...
  public
    property PathList : TStringList read FPathlist write FPathlist;
    property OnPathListEvent: TPathListEvent read FOnPathListEvent write FOnPathListEvent;
...
constructor TPathFinderFrame.Create(AOwner: TComponent);
...
 FPathlist := TStringlist.Create; // unter den anderen gefunden :-)
...
end;
destructor TPathFinderFrame.Destroy;
begin
  FPathlist.Free;
end;
Delphi-Quellcode:
  private { Private-Deklarationen }
    ...
    procedure DoPathListEvent(Sender: TObject; const Ordner: String; const Pathlist: TStringList); // der eigentliche Eventhandler
    ...
  end;
...
procedure TSQLiteTestMain.DoPathListEvent(Sender: TObject; const Ordner: String; const Pathlist: TStringList);
begin
  Self.EdiFolder.Clear;
  Self.EdiFolder.Text := FOrdner;
  Self.LBxPathlist.Clear;
...
  Self.LBxPathlist.Items.AddStrings(Pathlist); // das ist die eigene Liste ???
  Self.Pathlist.Assign(Pathlist); // die eigene Liste
  DMLSQLite.FillPathList(Self, Ordner, Pathlist); // Name wegen der Übesicht was wo geändert
end;
...
procedure TSQLiteTestMain.FormCreate(Sender: TObject);
begin
  PathFinderFrame1.OnPathListEvent := DoPathListEvent; // Handler in der eigenen Unit.
end;

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


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 22:35 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