![]() |
Undeklarierte Prozeduren aufrufen
Hallo!
Habe die Aufgabe bekommen, die ![]() Bisher habe ich Folgendes:
Delphi-Quellcode:
Die Frage ist nun also, ob man das irgendwie biegen kann, dass keine Fehlermeldungen mehr à la "[Fehler] Unit1.pas(60): Undefinierter Bezeichner: 'sierpB'" mehr bekomme und ich das Programm kompilieren kann.
private
{ Private-Deklarationen } procedure sierpA (level:integer); procedure sierpB (level:integer); procedure sierpC (level:integer); procedure sierpD (level:integer);[ [...] procedure sierpA (level:integer); begin if level > 0 then begin sierpA (level-1); forwdNW (dist); sierpB (level-1); forwdN (dist*2); // Zeile 60 sierpD (level-1); forwdSO (dist); sierpA (level-1); end; end; procedure sierpB (level:integer); [usw] Bei Java scheint das zu klappen, bei Delphi allerdings nicht. :( Bin für Antworten aller Art dankbar. |
Re: Undeklarierte Prozeduren aufrufen
Dadurch, dass Du die Methoden als private Klassenmethoden deklariert hast, musst Du sie im implementation-Teil auch als Klassenmethoden implementieren.
Delphi-Quellcode:
type TMyClass = class
... private procedure proc1; procedure proc2; end; implementation procedure TMyClass.proc1; begin ... end; procedure TMyClass.proc2; begin ... end; |
Re: Undeklarierte Prozeduren aufrufen
Deine Implementierungen sind keine Mitglieder einer Klasse. Im Interfaceteil oben hast du sie aber als Mitglieder einer Klasse (wohl deiner TForm1) deklariert. Entweder oder ... ;)
|
Re: Undeklarierte Prozeduren aufrufen
Zitat:
Delphi-Quellcode:
Type
TForm1 = Class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private Procedure Klassenmethode(); End; procedure Keine_Klassenmethode(); Var Form1: TForm1; Implementation {$R *.dfm} { TForm1 } procedure TForm1.Klassenmethode; begin ShowMessage('Ich bin eine Klassenmethode'); end; procedure Keine_Klassenmethode(); Begin Showmessage('Ich bin keine Klassenmethode'); End; Edit: erst kein Roter Kasten und dann funzen auch noch die Delphi-Tags nimmer - was ist hier los?!? |
Re: Undeklarierte Prozeduren aufrufen
Wenn du es mit Funktionen statt mit Methoden implementieren willst (wo sind die militanten OOPler? :mrgreen:), dann kannst du die forward-Deklaration verwenden:
Delphi-Quellcode:
@s-off: Das sind keine Klassenmethoden, sondern normale Methoden!
procedure sierpA (level:integer); forward;
procedure sierpB (level:integer); begin //... end; procedure sierpA (level:integer); begin //... end; [edit] Wir geraten heute irgendwie oft wegen Nichtigkeiten aneinander. Sollte nur ein Klarstellung sein. [/edit] |
Re: Undeklarierte Prozeduren aufrufen
Zitat:
Entschuldige bitte, dass ich hier mit meiner Begriffswahl etwas falsch lag. Ich bin halt davon ausgegangen, dass jemandem der Bezug so klarer ist; wusste ja nicht, dass Du dabei gleich Herzklabastern bekommst... :wall: Dennoch korrekt, dass Du das hier klargestellt hast; aber der Ton spielt die Musik. |
Re: Undeklarierte Prozeduren aufrufen
Das ging ja schneller als ich dachte. Nun meckert der Compiler auch nicht mehr, scheint also zu klappen.
Danke euch allen! :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 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