Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi procedure funktioniert nich? (https://www.delphipraxis.net/72592-procedure-funktioniert-nich.html)

richie 3. Jul 2006 14:48


procedure funktioniert nich?
 
Tach Allerseits,

Ich steh grad richtig aufm Schlauch. Dabei isses was richtig einfaches.

Also ich schreib eine procedure:

Delphi-Quellcode:
procedure machwas;
begin
  memo1.Lines.Add('Holla die Waldfee!'); //Zeile 35
end;
nun will ich das beim Buttonclick aufrufen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  machwas; // Zeile 29
end;
Jetzt kommen Fehlermeldungen:
Zitat:

[Pascal Fehler] Unit1.pas(29): E2003 Undefinierter Bezeichner: 'schreib'
[Pascal Fehler] Unit1.pas(35): E2003 Undefinierter Bezeichner: 'memo1'
[Pascal Fehler] Unit1.pas(35): E2066 Operator oder Semikolon fehlt
Wieso? Ich hab ein Beispiel aus nem Buch nachgebeut, Fehlermeldung. Und ein ordentliches sich damit beschäftigende Tutorial hab ich nicht gefunden. :gruebel:

mkinzler 3. Jul 2006 14:51

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.

Klaus01 3. Jul 2006 14:51

Re: procedure funktioniert nich?
 
Deine Prozedure kennt die Objekte der Form nicht,
weil Deine Prozedure nicht eine Methode der Form ist.

Delphi-Quellcode:
procedure machwas;
begin
  Form1.memo1.Lines.Add('Holla die Waldfee!'); //Zeile 35 
end;
sollte gehen, oder Du machst aus Deiner Prozedure eine Methode der Form.

Grüße
Klaus

RavenIV 3. Jul 2006 14:52

Re: procedure funktioniert nich?
 
entwerder schreibst Du
Delphi-Quellcode:
procedure TForm1.machwas;
begin
  memo1.Lines.Add('Holla die Waldfee!'); //Zeile 35
end;
oder
Delphi-Quellcode:
procedure machwas;
begin
  Form1.memo1.Lines.Add('Holla die Waldfee!'); //Zeile 35
end;
edit:
war wohl zu langsam :-(

richie 3. Jul 2006 14:54

Re: procedure funktioniert nich?
 
Oh, danke, erstes Problem gelöst. :-D

Aber jetzt kommt noch

Zitat:

[Pascal Fehler] Unit1.pas(29): E2003 Undefinierter Bezeichner: 'schreib'
:gruebel:

Klaus01 3. Jul 2006 14:56

Re: procedure funktioniert nich?
 
aus Deinem bisher veröffentlichten Quelltext kann man
nicht schließen was noch so verkehrt ist.

Grüße
Klaus

RavenIV 3. Jul 2006 14:57

Re: procedure funktioniert nich?
 
Zitat:

Zitat von richie
Oh, danke, erstes Problem gelöst. :-D

Aber jetzt kommt noch

Zitat:

[Pascal Fehler] Unit1.pas(29): E2003 Undefinierter Bezeichner: 'schreib'
:gruebel:

du hast uns die Zeile 29 vorenthalten.

richie 3. Jul 2006 14:59

Re: procedure funktioniert nich?
 
Ich will die procedure machwas jetzt im Buttonclick aufrufen.

Dann kommt aber:
Zitat:

[Pascal Fehler] Unit1.pas(29): E2003 Undefinierter Bezeichner: 'machwas'

P.S.: Stand oben. Hatte mich nur verschrieben.

Edit: War oben als Kommentar

Klaus01 3. Jul 2006 15:03

Re: procedure funktioniert nich?
 
wo hast denn Du Deine Prozedure machwas hingeschrieben?

Steht sie unterhalb implementation?

Grüße
Klaus

richie 3. Jul 2006 15:06

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.

Klaus01 3. Jul 2006 15:07

Re: procedure funktioniert nich?
 
Du solltes die Prozedure machwas vor die Methode Button1click schreiben,
dann sollte es gehen.

Grüße
Klaus

richie 3. Jul 2006 15:11

Re: procedure funktioniert nich?
 
:idea: :arrow: :love: Danke es funktioniert!

RavenIV 3. Jul 2006 15:18

Re: procedure funktioniert nich?
 
oder vor
Delphi-Quellcode:
implementation
dieses schreiben:
Delphi-Quellcode:
procedure machwas;
Dein "Button1Click" kennt "machwas" nicht, weil es erst später im Quelltext erscheint.
Wenn Du nun eine Vorabdefinition machst, dann ist "machwas" bekannt.
Ist meines Erachtens schöner, als "machwas" vor "Button1Click" zu schreiben.

Sidorion 3. Jul 2006 15:36

Re: procedure funktioniert nich?
 
Dann wird 'machwas' aber gleichzeitig veröffentlicht, was jedoch nicht immer im Sinne des Erfinders ist.

RavenIV 3. Jul 2006 15:44

Re: procedure funktioniert nich?
 
Zitat:

Zitat von Sidorion
Dann wird 'machwas' aber gleichzeitig veröffentlicht, was jedoch nicht immer im Sinne des Erfinders ist.

Ist sie doch sowieso schon, weil sie keinem Form zugeordnet ist.
Falls das öffentliche nicht gewünscht ist, muss sie eben in private.

Muetze1 3. Jul 2006 21:34

Re: procedure funktioniert nich?
 
Zitat:

Zitat von RavenIV
Zitat:

Zitat von Sidorion
Dann wird 'machwas' aber gleichzeitig veröffentlicht, was jedoch nicht immer im Sinne des Erfinders ist.

Ist sie doch sowieso schon, weil sie keinem Form zugeordnet ist.
Falls das öffentliche nicht gewünscht ist, muss sie eben in private.

Hä? Sie ist nicht öffentlich, so lange sie nur implementiert ist. Und da es keine Methode ist: Was ist bei dir "private"??

himitsu 4. Jul 2006 12:25

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;

Muetze1 4. Jul 2006 18:36

Re: procedure funktioniert nich?
 
Zitat:

Zitat von himitsu
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

Genau darauf wollte ich mit meiner Frage ja hinaus.

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...

himitsu 5. Jul 2006 10:12

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