Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - funktion in procedure


smokydog - Mo 10.01.05 18:58
Titel: funktion in procedure
Hallo erstmal

Vielleicht klingt es doof aber ich weiss nicht weshalb ich einen Fehler bekomme.
Wenn ich die procedure starte in der eine andere Function benutzt wird jammert er immer.
Bitte helft mir :)


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function blubber(blub:string):string;
begin
......
end;

procedure bluu(muh:string);
begin
...
add := blubber(muh);
...
end;



Moderiert von user profile iconTino: Topic aus Sonstiges verschoben am Do 13.01.2005 um 09:45


hansa - Mo 10.01.05 21:17

Das Weglassen der Fehlermeldung ist einer der beliebtesten Fehler überhaupt in einem Forum. :P Insofern kann man nichts darüber sagen, was wo blubbert und warum es "muh" macht.

Der einzige Anhaltspunkt ist das "add". Wie das aussieht weiß ich nicht. Welcher Typ usw. Dieses Wort ist allerdings bei Borland & Co sehr beliebt. Und die Glaskugel meint gerade, es könnte eventuell mit einem WITH zusammenhängen.


Karlson - Mo 10.01.05 21:26

Meine Glasskugel meint das da sowas wie 'undefinierter Bezeichner' kommen müsste.
Procedure und Function müssen geforwardet werden.

Und der Syntax um das add ist höchst verdächtig, da schließ ich mich Hansa an.


hansa - Mo 10.01.05 21:36

Karlson hat folgendes geschrieben:
Procedure und Function müssen geforwardet werden.


Nein, wieso denn das ? :shock: Das sind ganz normale Functions / Prozeduren.


Karlson - Mo 10.01.05 22:43

ups, tut mir leid. Ich hab micht verlesen und gedacht, die procedure sei vor der function impletiert worden. sorry.

Tja in diesem Fall hat Hansa noch mehr recht. Also: Fehlermeldung und ganzer Source, wenns geht.


JayEff - Mo 10.01.05 22:51
Titel: Re: funktion in procedure
ähm.. ich als nich so der oberchecker.. bin mir nich sicher.. aber klappts vll mit

smokydog hat folgendes geschrieben:
Hallo erstmal

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function TForm1.blubber(blub:string):string;
begin
......
end;

procedure bluu(muh:string);
begin
...
add := blubber(muh);
...
end;


edit: Nope.. mit

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function blubber(blub:string):string;
begin
result:='asd';
end;

procedure bluu(muh:string);
begin
muh := blubber(muh);
end;

klappts bei mir prima.


Karlson - Di 11.01.05 00:17
Titel: Re: funktion in procedure
Moin!

Das, was du vorschlägst würde dem von von mir angesprochenem forwarden entsprechen.
Nur der vollständigkeit halber, in deinem ersten QT hast du vergessen die function im Interface einzufügen.
Das forwarden, wäre nur dann nötig, wenn entweder die Funktion erst nach der Prozedur implentiert worden wäre, oder aber, wenn in der Prozedur auf Objekte, die in der unit deklariert worden sind (also z.B. ein Panel) zugegriffen wird, es wäre aufgrund dieses add's doch anzunehmen, dass er auf einen Listbox oder ein Memo oder sowas zugreift, und deswegen den Fehler bekommt, aus dem doch sehr dürftigen Code geht das allerdings nicht hervor.

Alternative ohne forwarden: Anstatt panel1.color := cllime, form1.panel1.color := cllime schreiben, was allerdings später noch zu problemen führen kann. Also forwarden!


hansa - Di 11.01.05 02:34
Titel: Re: funktion in procedure
Karlson hat folgendes geschrieben:
Das, was du vorschlägst würde dem von von mir angesprochenem forwarden entsprechen.


Karlson, vergesse in diesem Zusammenhang endlich das FORWARD. Du hast es doch selber ungefähr beschrieben, wozu das ganze gut ist. In zigtausend Zeilen Source ist bei mir ein FORWARD drin und nur, weil es um eine Komponente geht, die ich umgebaut habe und nicht so tief einsteigen will.

Wenn das "muh" nun geht, so sehe ich nur, daß es kein "add" mehr ist. Ansonsten ist alles identisch.


smokydog - Di 11.01.05 16:50

danke. Die Fehlermeldung hätte eh nicht weiter geholfen.
Ich habs gelöst, es war ein falscher Wert der alles verursachte.