![]() |
AW: Gleiche Variablen-Namen
Hi zusammen
@DeddyH: Zitat:
Klar, ich hätte von Anfang an sehen können: Da sind zwei gleichnamige Variablen, die einander zugewiesen werden sollen. Mein Ansatz war ja, vor dem Abfeuern des Events eine weitere Stringliste anderen Namens zu erzeugen und die dann an die Datenmodul.Stringliste zuzuweisen. Nur hätte ich dann für den gleichen Inhalt nicht nur 2 Instanzen der Liste gehabt, sondern temporär deren drei. @bra: Zitat:
Der Sender:
Delphi-Quellcode:
und der Empfänger:
if Assigned(FOnPathListEvent) then
FOnPathListEvent(Sender, FOrdner, FPathlist);
Delphi-Quellcode:
Das erste, was ich versucht habe, war eben hier den Konstantenparameter anders zu benennen. Delphi meckerte das als unterschiedliche Deklaration an. Während ich dies schreibe, fällt mir auf, dass ich nicht versucht habe, die Liste nicht als Konstante zu übergeben. Aber das ändert an der Unterschiedlichen Deklaration nichts.
procedure TSQLiteTestMain.DoPathListEvent(Sender: TObject;
const FOrdner: String; const FPathlist: TStringList); begin Self.EdiFolder.Clear; Self.EdiFolder.Text := FOrdner; Self.LBxPathlist.Clear; Self.LBxPathlist.Items.AddStrings(FPathlist); // Self.FPathlist.Assign(FPathlist); end; Wobei FPathList im PathfinderFrame zum Bleistift FFileList sein könnte. So sollte sich eine Kollision bei der Übergabe vermeiden lassen. Gruss Delbor |
AW: Gleiche Variablen-Namen
Zitat:
Da die F-Notation schon von Feldern besetzt ist, bietet sich bei Parametern die A-Notation an - ist aber immer noch Geschmackssache. |
AW: Gleiche Variablen-Namen
Zitat:
|
AW: Gleiche Variablen-Namen
Auf mich will ja keiner hören... seufz.
Sherlock |
AW: Gleiche Variablen-Namen
[OT]
:P Patient: Alle ignorieren mich! Arzt: Der nächste bitte... Willkommen im Club. :zwinker: [/OT] Zitat:
|
AW: Gleiche Variablen-Namen
Hi zusammen
@ Jumpy Zitat:
Ich habe mich ![]() Ein Zitat daraus: Zitat:
Als ich versuchte, den Namen des übergeben Listen-Parameters zu ändern und Delphi meckerte wegen unterschiedlicher Deklaration, dachte ich allerdings an die Deklaration des Events und nicht an diejenige der Empfängerroutine. Und da müssen in der Deklaration und in der Implementierung nicht nur Reihenfolge und Tip stimmen, sondern auch die Parameterbezeichner. @Uwe Raabe Zitat:
Delphi-Quellcode:
Natürlich müssen die Deklarationen jeder der beiden Methoden dabei gleich lauten und die Reihenfolge und Typen der Parameter übereinstimmen.
procedure Tfoo.xxx
begin GetNamen(Strasse, Hausnummer) end function Getnamen(Street, Number) Begin End End; Interessant ist jetzt: Im Datenmodul Heisst die Liste jetzt anders. Trotzdem gibts die beiden schon gepostetn Fehlermeldungen. Andrerseits funktioniert folgendes problemlos:
Delphi-Quellcode:
@Sherlock:
procedure TDMLSQLite.DoPathListEvent(Sender: TObject;
const FOrdner: String; const FPathlist: TStringList); begin // FFileList.AddStrings (FPathlist); //<<=== löst die bekannten Fehlermeldungen aus SQLiteTestMain.LBxPathlist.Items.AddStrings(FPathlist); //<<== Kein Problem end; Zitat:
Gruss Delbor |
AW: Gleiche Variablen-Namen
Hallöle...8-)
Zitat:
Schreib mal die Eventdeklaration. |
AW: Gleiche Variablen-Namen
Hi Sherlock
Zitat:
Nenne ich den übergebenen ListenParameter im Empfänger AList, muss er auch bei der Eventdeklaration so heissen. Ich habe im Frame die Deklaration der Liste mal probeweise nach Public verschoben. Das hatte jedoch keine Auswirkungen - wenn, dann hätte ich erwartet, dass von den angesprochenen 2 Fehlermeldungen eine ausbleibt. Gruss Delbor |
AW: Gleiche Variablen-Namen
Zitat:
Über welche Fehlermeldungen reden wir? Screenshot. :wink: |
AW: Gleiche Variablen-Namen
Zitat:
Delphi-Quellcode:
type
// Deklaration des Events TMyEvent = procedure(Street: string; Country: string) of object; TMyClass = class private FOnReport: TMyEvent; public procedure DoSomethingAndReport(); property OnReport: TMyEvent read FOnReport write FOnReport; end; TForm1 = class(TForm) private procedure ReportHandler(Street: string; Country: string); end; implementation procedure TMyClass.DoSomethingAndReport(); var tmpStreet, tmpCountry: string; begin tmpStreet := GetStreet(); // Irgendeine Methode ausführen tmpStreet := GetCountry(); // Irgendeine Methode ausführen if Assigned(FOnReport) then FOnReport(tmpStreet, tmpCountry); // Hier wird das Event ausgelöst end; // 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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:10 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