Autor Beitrag
Daimonion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55



BeitragVerfasst: Do 30.09.04 11:35 
Hallo

Grade bin ich hier in dem Forum angekommen und schon möcht ich eine FRage loswerden.

Ich programmiere grade mit Delphi5 an einem Projekt und bräuchte da mal eure Hilfe zu dem oben angegebenen Problem

Ich habe hier drei Funktionen, die unterschiedliche Übergabevariablen haben

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
         function fahre (var ASF: MOA):integer; overload
         function fahre (var ASF: MALI):integer; overload;
         function fahre (var ASF: MACI):integer; overload;

implementation

         function fahre (var ASF: MOA): integer; overload;
         begin
         end;
         function fahre (var ASF: MALI):integer; overload;


und so weiter.

Als Overload habe ich sie gekennzeichnet, doch wenn ich die Unit jetzt compilieren will wird mir folgender Fehler ausgegeben
Delphi-Compiler hat folgendes geschrieben:
[Fehler] apci8001_com.pas(12): Ungenügende Forward- oder External-Deklaration: 'fahre'

Der Hintergrund dürfte ja eigentlich klar sein. Nur nochmal für die dies noch nicht wissen.

Ich möchte aus meinem Programm immer nur die Funktion mit der jeweiligen Struktur aufrufen und der Compiler linkt mir dann zur richtigen Funktion.

Leider bin ich noch nicht ganz so fit in Delphi und deshalb frage ich euch mal ob ihr mir da schnell weiterhelfen könntet.


Moderiert von user profile icontommie-lie: Delphi- und Quote-Tags hinzugefügt
Moderiert von user profile icontommie-lie: Topic aus Sonstiges verschoben am Do 30.09.2004 um 12:45
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Do 30.09.04 12:13 
mach mal das overload aus dem implementation teil raus.

grüße
alex
Daimonion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55



BeitragVerfasst: Do 30.09.04 12:30 
den fehler sag ich euch lieber nicht, da schickt ihr mich gleich auf die ignorliste...

Na ja nur zur vollständigkeit wag ich es mal

da hab ich schon hinter jedem end ein Kommentar stehen und trotzdem schreib ich dussel die neuen Funktionen im implementation teil hinter das end des implementation teil...

so dumm kann nur ich sein :shock:

@iKilledKenny

ich hab das overload auch mal weggemacht und das geht auch.. danke für den tipp wieder was dazugelernt.


duck und weg :? :? :?
Mr Anderson
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 01.10.04 18:22 
ich habe ein ähnliches Problem, jedoch ist meine Funktion (glaube jedenfalls nicht) überladen.

ausblenden Delphi-Quelltext
1:
2:
3:
type
  TForm5 = class(TForm)
 procedure ed_anzahlChange(Sender: TObject);

nach dem
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var
  Form5: TForm5;

implementation
 {$R *.dfm}

steht dann
ausblenden Delphi-Quelltext
1:
2:
3:
4:
function anzahl_testreihe():integer;
begin
result := strtoint(ed_anzahl.text);
end;

Ich bekomme immer eine Fehlermeldung.
[Fehler] unit5.pas(23): Ungenügende Forward- oder External-Deklaration: 'TForm5.anzts'

Könnt ihr mir vielleicht einen kleinen Tipp geben?

MfG
Neo
hallo
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 450

WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
BeitragVerfasst: Fr 01.10.04 18:28 
Wie wärs mal mit TFORM5.funktionsname???

_________________
Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
Mr Anderson
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 02.10.04 15:21 
hallo hat folgendes geschrieben:
Wie wärs mal mit TFORM5.funktionsname???

Auch du hast irgendwann mal klein angefangen... *grml*

Dein Tipp funktioniert, jedoch frage ich mich, warum ich sie zweimal zuweisen muss wenn doch oben schons steht :
ausblenden Delphi-Quelltext
1:
2:
3:
type
  TForm5 = class(TForm) 
function anzahl_testreihe():integer;

wieso muss ich dann nachher sie ebenfalls nochmal mit TForm5 zuweisen, wenn sie diese Zuordnung schon erhalten hat...?

MfG
GSE
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 740

Win 2k, Win XP Pro
D5 Prof, D6 Ent, D2k5 PE
BeitragVerfasst: Sa 02.10.04 15:30 
da es ja möglich wäre,das es die gleiche funktin noch mal für ne andere klasse gibt, und woher soll er sonst wissen welche zu welcher gehört?

mfg
GSE

_________________
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs
and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Richard Cook)
.Chef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1112



BeitragVerfasst: Sa 02.10.04 15:32 
Weil du auch unter implementation die entsprechende Basisklasse vor den Funktionsnamen schreiben musst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
TFormx = class(TForm)
    function ChefRoutine(x) : Byte;
//...
implementation
//...
function TFormx.ChefRoutine(x) : Byte;
begin
  //Mach hier irgendwas
end;

Prinzip klar geworden?

Gruß,
Jörg

_________________
Die Antworten auf die 5 häufigsten Fragen:
1. Copy(), Pos(), Length() --- 2. DoubleBuffered:=True; --- 3. Application.ProcessMessages bzw. TThread --- 4. ShellExecute() --- 5. Keine Vergleiche von Real-Typen mit "="!
Mr Anderson
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 02.10.04 18:32 
Ich glaube schon, dass ich es jetzt verstanden habe :)
danke euch!
ich empfehle euch weiter :D :=)

MfG

Neo