| Autor |
Beitrag |
Darki
Hält's aus hier
Beiträge: 15
|
Verfasst: Sa 18.06.05 14:56
Hallo zusammen,
komme einfach nicht weiter und verstehe den Fehler nicht
Habe in einer DLL das Result als Array definiert, wenn ich es jetzt im Programm selber ansprecher, sagt er mir
immer :
[Fehler] Unit1.pas(53): Inkompatible Typen: 'Array' und 'varar1'
Hier mal der Code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| type varar=array [0..3] of real; function werte(eins,zwei,drei: real; Name, Status: String; gbj: Integer): varar; stdcall; . . . result[0] := Ergebnis1; result[1] := Ergebnis2; result[2] := Ergebnis3; result[3] := Ergebnis4; |
Das war der Code aus der DLL.
Im Programm selber sieht es so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| type varar1=array [0..3] of real; function werte(eins,zwei,drei: real; Name,Status: String; gbj: Integer): varar1; stdcall; external 'werte.dll';
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); var . . . ergeb:array [0..3] of real; begin . . . ergeb:=werte(eins,zwei,drei,Name,Status,gbj); |
Wäre super wenn mir jemand helfen könnte.
Viele Grüße
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
Zuletzt bearbeitet von Darki am Sa 18.06.05 15:04, insgesamt 1-mal bearbeitet
|
|
Radioactive
      
Beiträge: 179
Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
|
Verfasst: Sa 18.06.05 14:58
In welcher Unit (oben oder unten?) und in welcher Zeile kommt der Fehler?
_________________ Radioactive
"Wer scrollt, verliert!" Matthias Stein, Informatiklehrer am GG
|
|
Darki 
Hält's aus hier
Beiträge: 15
|
Verfasst: Sa 18.06.05 15:03
der Fehler kommt bei:
ergeb:=werte(eins,zwei,drei,Name,Status,gbj);
Zuletzt bearbeitet von Darki am Sa 18.06.05 15:06, insgesamt 1-mal bearbeitet
|
|
Darki 
Hält's aus hier
Beiträge: 15
|
Verfasst: Sa 18.06.05 15:05
Darki hat folgendes geschrieben: | der Fehler kommt bei:
ergeb:=werte(eins,zwei,drei,Name,Status,gbj); |
|
|
ceding
      
Beiträge: 53
Win XP
D 4
|
Verfasst: Sa 18.06.05 15:33
ich weis nicht aber ich glaube das speicherfeld ist real aber du willst einen String speichern
da musst du das umwandeln
_________________ Es gibt kein Gott!! Was ist die Seele ?
|
|
Radioactive
      
Beiträge: 179
Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
|
Verfasst: Sa 18.06.05 15:34
Das heißt, deine Funktion "werte" gibt einen falschen Typ zurück. Du musst den Rückgabewert von "varar1" in "array [0..3] of real" ändern!
_________________ Radioactive
"Wer scrollt, verliert!" Matthias Stein, Informatiklehrer am GG
Zuletzt bearbeitet von Radioactive am Sa 18.06.05 15:37, insgesamt 2-mal bearbeitet
|
|
Darki 
Hält's aus hier
Beiträge: 15
|
Verfasst: Sa 18.06.05 15:35
Nein, eigentlich sind alles Reals
|
|
ceding
      
Beiträge: 53
Win XP
D 4
|
Verfasst: Sa 18.06.05 15:35
es müsste dan so heißen
Quelltext 1:
| ergeb:=strtoint(werte(eins,zwei,drei,Name,Status,gbj)); |
ich weis nicht ob du das willst
_________________ Es gibt kein Gott!! Was ist die Seele ?
|
|
Radioactive
      
Beiträge: 179
Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
|
Verfasst: Sa 18.06.05 15:38
Ich habe meine Aussage noch mal korrigiert -> siehe oben.
| Zitat: | | Das heißt, deine Funktion "werte" gibt einen falschen Typ zurück. Du musst den Rückgabewert von "varar1" in "array [0..3] of real" ändern! |
_________________ Radioactive
"Wer scrollt, verliert!" Matthias Stein, Informatiklehrer am GG
|
|
Darki 
Hält's aus hier
Beiträge: 15
|
Verfasst: Sa 18.06.05 15:44
Oh, super jetzt nimmt er es an.
aber wenn ich jetzt sage:
ausgabe:=ergeb[0];
dann heißt es ungültige gleitkommaoperation.
wenn ich nur die dll ausführe ohne mir eine Augabe
geben zu lassen kommt keine fehlermeldung, also muss
die dll ja dann ok sein.
|
|
Radioactive
      
Beiträge: 179
Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
|
Verfasst: Sa 18.06.05 15:47
Ist ausgabe ein string oder ein Real? Wenn es ein string ist, musst du den Array-Wert erst mit FloatToStr oder FloatToStrF umwandeln 
_________________ Radioactive
"Wer scrollt, verliert!" Matthias Stein, Informatiklehrer am GG
|
|
Darki 
Hält's aus hier
Beiträge: 15
|
Verfasst: Sa 18.06.05 15:57
Das habe ich gemacht.
Sobald ich auf ergeb zugreifen will, kommt der fehler.
wenn ich auf ergeb nicht zu greife kommt keine Fehlermeldung 
|
|
Radioactive
      
Beiträge: 179
Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
|
Verfasst: Sa 18.06.05 16:00
Wie greifst du denn auf ergeb zu?
_________________ Radioactive
"Wer scrollt, verliert!" Matthias Stein, Informatiklehrer am GG
|
|
Darki 
Hält's aus hier
Beiträge: 15
|
Verfasst: Sa 18.06.05 16:06
|
|
Darki 
Hält's aus hier
Beiträge: 15
|
Verfasst: Sa 18.06.05 16:16
Ok, der fehler muss doch an der dll ansich liegen.
Aber 1000 Dank, Du hast mir echt weiter geholfen!!
|
|