![]() |
Deklaration
Hi Leute!
Folgendes Probelem: Ich hab eine Prozezur auf der Haupt-Unit geschrieben, hab nun eine zweite Form hinzugefügt und die Prozedur auf die neue Unit verlegt. Beim Compilieren erhalte ich jettz immer folgende Meldung: "[Error] UnitLS.pas(14): Unsatisfied forward or external declaration: 'TForm2.speichern'" Frage: Wo muss ich den Verweis auf die Prozedur ändern um diesen Fehler abzustellen? Prozeduraufruf:
Delphi-Quellcode:
Uses und Type der neuen Unit:
procedure TForm1.Speichern1Click(Sender: TObject);//Menüpunkt "Speichern"
begin speichern; end;
Delphi-Quellcode:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ExtCtrls, unittype; type TForm2 = class(TForm) ListBox1: TListBox; Button1: TButton; Button2: TButton; procedure speichern; |
Du hast nur den Aufruf verschoben.
Du musst auch die Implementierung in die 2. Unit ziehen und dann aus dem Hauptform über Form2.Speichern aufrufen. Also:
Code:
muss auch nach Form2.
Procedure TForm1.Speichern;
begin // blafasel end; |
Das Ereignis was die Prozedur aufruft passiert aber nach wie vor noch auf Form1...oder ist das in diesem Fall irrelevant?
|
Ok, ich hab's anders gelöst, aber jetzt stehe ich wieder vor einem Deklarationsproblem (deswegen hab ich keinen neuen Thread aufgemacht @mods)
Er gibt mir bei folgender Zeile die Fehlermeldung "Undeclared Identifier"
Delphi-Quellcode:
Wie muss ich die Form2 unter Uses deklarieren damit ich diesen Fehler erschossen kriege?
Form2.ListBoxLaden.Items.Add(DateTimeToStr(Now));
|
Hallo,
wenn ich Dich richtig verstanden habe, hast Du auf Form2 eine Listbox mit Namen ListBoxLaden. Code der Form1:
Delphi-Quellcode:
Wenn Du nur UNIT Unit1; ... IMPLEMENTATION USES Unit2; {$R *.DFM} PROCEDURE TForm1.Button1Click(Sender: TObject); BEGIN Form2.ListBoxLaden.Items.Add(DateTimeToStr(Now)); Form2.Show; END;
Delphi-Quellcode:
schreibst, und in der IDE auf Start drückst, sollte dich Delphi darauf aufmerksam machen, das Form2 in der Deklaration fehlt und Dir anbietet Form2 selbstständig einzubinden.
Form2.ListBoxLaden.Items.Add(DateTimeToStr(Now));
|
Hab ich aber gemacht und erhalte trotzdem diese Meldung...
Also, schildern wir das Problem mal ausführlicher: Die UnitLS gehört zur Form2. Auf Form2 befindet sich eine ListBox, bei der die Einträge über eine Funktion erfolgen die sich auf der Unitfunc befindet. Uses der Haupt-Unit
Delphi-Quellcode:
Uses der Unitfunc
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, unittype, unitfunc,unitls, Menus, ExtCtrls, StdCtrls, ActnList, StdActns;
Delphi-Quellcode:
Uses derUnitLS
uses SysUtils, ExtCtrls, StdCtrls, Controls, Classes, Graphics, Dialogs,Forms,
unittype;
Delphi-Quellcode:
Anweisung zum Schreiben in der Listbox (auf der Unitfunc)
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ExtCtrls, unittype;
Delphi-Quellcode:
Form2.ListBoxLaden.Items.Add(DateTimeToStr(Now));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:43 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 by Thomas Breitkreuz