Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - function declarieren


adler - Do 20.11.03 17:43
Titel: function declarieren
Hi!

Habe ne Funktion, doch falls ich sie aufrufen will, sagt er mit immer,
undeclared identifer 'Explode'

function Explode(text: string; seperator: Char): Tarray;

so fängt sie an...

kann mir einer helfen?


Sir SiLvA - Do 20.11.03 17:57
Titel: Re: function declarieren
adler hat folgendes geschrieben:
Hi!

Habe ne Funktion, doch falls ich sie aufrufen will, sagt er mit immer,
undeclared identifer 'Explode'

function Explode(text: string; seperator: Char): Tarray;

so fängt sie an...

kann mir einer helfen?


Wenn Du den kompletten Quellcode posten würdest könnte man dir helfen :-)
(sprich poste die .pas-datei in der diese funktion drinne steht)

aber nach deiner fehlermeldung schätze ich mal du hast die funktion nicht in deiner haupt-unit drinne stehen ? :)


adler - Do 20.11.03 19:27


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
function Explode(text: string; seperator: Char): Tarray;
var
  s: string;
  i: Integer;
  c: Char;

begin
  Result := nil;
  s := '';
  for i := 1 to Length(text) do
  begin
    c := text[i];
    if c = seperator then
    begin
      SetLength(Result, Length(Result) + 1);
      Result[Length(Result) - 1] := s;
      s := '';
    end
    else
      s := s + c;
  end;
  if s <> '' then
  begin
    SetLength(Result, Length(Result) + 1);
    Result[Length(Result) - 1] := s;
  end;
end;


Hier die Function...
Die Unit ist bestimmt zu groß :)
weil das mein 3D spiel wird und alles dort drinne steht, ausserdem weiß ich net wo ich es hinladen soll... naja

was heißt haupt-unit?
für mich ist alles eine hauptunit ^^


Sir SiLvA - Do 20.11.03 19:42

sorry aber wenn den brauch ich die ganze .pas datei :-)

besteht dein prg aus 1 .pas datei oder aus mehreren ?


rochus - Do 20.11.03 19:48

hast du das in einer eigenen unit? also:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
unit myunit;

interface

uses WhatYouNeed;

implementation

function blablabla():plopp;
begin

end;


end.


wenn ja, musst du noch im interface abschnitt (überhalb von implementation) den funktions kopf (also das function blablabla():plopp..) einbaun, damit die funktion von anderen units erkannt wird.


adler - Do 20.11.03 21:27
Titel: ja
alles in einer unit... ähm, gib mir deine email adresse und ich schicks dir...
ne, hab mehrere ^^
einmal das spiel und dann die menüs...


tommie-lie - Do 20.11.03 22:04

Vermutlich ist sie zum Zeitpunkt des Aufrufs tatäshclich nicht deklariert.
Steht die Funktion in der Datei "unterhalb" oder "oberhalb" des Aufrufs? Wenn sie unterhalb steht, hast du zwei Optionen:


adler - Do 20.11.03 22:35
Titel: unterhalb
sie ist unterhalb :)
kann ich sie einfach nach oben schieben?


adler - Do 20.11.03 22:55
Titel: danke
habe es hinbekommen, vielen danke :)


tommie-lie - Do 20.11.03 23:04
Titel: Re: unterhalb
adler hat folgendes geschrieben:
sie ist unterhalb :)
kann ich sie einfach nach oben schieben?

Ich sagte ja, daß es die eine Option gewesen wäre, sie einfach ganz an den Anfang zu verschieben.
Manchmal ist es aber sinnvoll, sie da zu lassen, wo sie ist (bei umfangreichen Projekten empfiehlt es sich, eine gewisse Struktur in seinem Quellcode zu haben), deswegen solltest du dir die Variante mit der Forward-Deklaration auch mal anschauen.