![]() |
procedure funktioniert nich?
Tach Allerseits,
Ich steh grad richtig aufm Schlauch. Dabei isses was richtig einfaches. Also ich schreib eine procedure:
Delphi-Quellcode:
nun will ich das beim Buttonclick aufrufen:
procedure machwas;
begin memo1.Lines.Add('Holla die Waldfee!'); //Zeile 35 end;
Delphi-Quellcode:
Jetzt kommen Fehlermeldungen:
procedure TForm1.Button1Click(Sender: TObject);
begin machwas; // Zeile 29 end; Zitat:
|
Re: procedure funktioniert nich?
Du hast eine freie Prozedur entworfen, diese kennt die Methoden der Form so nicht. Du mußt entweder deine Prozedur als Methode der Form-Klasse deklarieren oder halt Formx. vor die Komponeneten schreiben.
|
Re: procedure funktioniert nich?
Deine Prozedure kennt die Objekte der Form nicht,
weil Deine Prozedure nicht eine Methode der Form ist.
Delphi-Quellcode:
sollte gehen, oder Du machst aus Deiner Prozedure eine Methode der Form.
procedure machwas;
begin Form1.memo1.Lines.Add('Holla die Waldfee!'); //Zeile 35 end; Grüße Klaus |
Re: procedure funktioniert nich?
entwerder schreibst Du
Delphi-Quellcode:
oder
procedure TForm1.machwas;
begin memo1.Lines.Add('Holla die Waldfee!'); //Zeile 35 end;
Delphi-Quellcode:
edit:
procedure machwas;
begin Form1.memo1.Lines.Add('Holla die Waldfee!'); //Zeile 35 end; war wohl zu langsam :-( |
Re: procedure funktioniert nich?
Oh, danke, erstes Problem gelöst. :-D
Aber jetzt kommt noch Zitat:
|
Re: procedure funktioniert nich?
aus Deinem bisher veröffentlichten Quelltext kann man
nicht schließen was noch so verkehrt ist. Grüße Klaus |
Re: procedure funktioniert nich?
Zitat:
|
Re: procedure funktioniert nich?
Ich will die procedure machwas jetzt im Buttonclick aufrufen.
Dann kommt aber: Zitat:
P.S.: Stand oben. Hatte mich nur verschrieben. Edit: War oben als Kommentar |
Re: procedure funktioniert nich?
wo hast denn Du Deine Prozedure machwas hingeschrieben?
Steht sie unterhalb implementation? Grüße Klaus |
Re: procedure funktioniert nich?
Hier mal der ganze Code (Das ist ein Testprogramm, deswegen klein):
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin machwas; end; procedure machwas; begin Form1.memo1.Lines.Add('Holla die Waldfee!'); end; end. |
Re: procedure funktioniert nich?
Du solltes die Prozedure machwas vor die Methode Button1click schreiben,
dann sollte es gehen. Grüße Klaus |
Re: procedure funktioniert nich?
:idea: :arrow: :love: Danke es funktioniert!
|
Re: procedure funktioniert nich?
oder vor
Delphi-Quellcode:
dieses schreiben:
implementation
Delphi-Quellcode:
Dein "Button1Click" kennt "machwas" nicht, weil es erst später im Quelltext erscheint.
procedure machwas;
Wenn Du nun eine Vorabdefinition machst, dann ist "machwas" bekannt. Ist meines Erachtens schöner, als "machwas" vor "Button1Click" zu schreiben. |
Re: procedure funktioniert nich?
Dann wird 'machwas' aber gleichzeitig veröffentlicht, was jedoch nicht immer im Sinne des Erfinders ist.
|
Re: procedure funktioniert nich?
Zitat:
Falls das öffentliche nicht gewünscht ist, muss sie eben in private. |
Re: procedure funktioniert nich?
Zitat:
|
Re: procedure funktioniert nich?
wenn's halt nicht öffentlich sein soll (PS: PRIVATE ... ich denk mal er meint in 'ner Klasse, wo sie ja aber nicht drin ist), dann eben nach implementation
Code:
procedure machwas; [b]forward;[/b]
... procedure machwas; begin ... end; |
Re: procedure funktioniert nich?
Zitat:
Und Forward muss nicht sein, wenn die Procedure/Funktion vor dem Aufruf der selbigen steht. Eine geschickte Reihenfolge der Procedure erspart einem auch das forward... |
Re: procedure funktioniert nich?
Aber genau ein geschickte Reihenfolge erfordert eben manchmal ein Forward ... man kann ja nicht alles nur nach oben verfrachten, nur weil es weiter oben schonmal aufgerufen wird.
Und bei sich rekursiv aufrufenden Funktionen geht es eh nicht ohne. Ich verwende lieber ein Forwar und hab dann dafür die Funktionen in einer funktionell logischen Reihenfolge, statt einer Undurchschaubaren nach Aufrufen sortierten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 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