Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Deklaration (https://www.delphipraxis.net/3728-deklaration.html)

Hellcat 27. Mär 2003 10:42


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:
procedure TForm1.Speichern1Click(Sender: TObject);//Menüpunkt "Speichern"
begin
  speichern;
end;
Uses und Type der neuen Unit:
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;

Phoenix 27. Mär 2003 10:51

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:
Procedure TForm1.Speichern;
begin
  // blafasel
end;
muss auch nach Form2.

Hellcat 27. Mär 2003 10:57

Das Ereignis was die Prozedur aufruft passiert aber nach wie vor noch auf Form1...oder ist das in diesem Fall irrelevant?

Hellcat 27. Mär 2003 14:03

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:
Form2.ListBoxLaden.Items.Add(DateTimeToStr(Now));
Wie muss ich die Form2 unter Uses deklarieren damit ich diesen Fehler erschossen kriege?

APP 27. Mär 2003 15:32

Hallo,
wenn ich Dich richtig verstanden habe, hast Du auf Form2 eine Listbox mit Namen ListBoxLaden.

Code der Form1:
Delphi-Quellcode:

UNIT Unit1;

...
IMPLEMENTATION

USES Unit2;

{$R *.DFM}

PROCEDURE TForm1.Button1Click(Sender: TObject);
BEGIN
   Form2.ListBoxLaden.Items.Add(DateTimeToStr(Now));
   Form2.Show;
END;
Wenn Du nur
Delphi-Quellcode:
Form2.ListBoxLaden.Items.Add(DateTimeToStr(Now));
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.

Hellcat 31. Mär 2003 09:16

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
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, unittype, unitfunc,unitls, Menus, ExtCtrls, StdCtrls, ActnList, StdActns;
Uses der Unitfunc
Delphi-Quellcode:
uses SysUtils, ExtCtrls, StdCtrls, Controls, Classes, Graphics, Dialogs,Forms,
     unittype;
Uses derUnitLS
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,ExtCtrls, unittype;
Anweisung zum Schreiben in der Listbox (auf der Unitfunc)
Delphi-Quellcode:
 Form2.ListBoxLaden.Items.Add(DateTimeToStr(Now));


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 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