Seite 1 von 1

string-Rückgabewert bei DLL

Verfasst: 29.01.2005 21:32
von DarkCrow
Hi Leute,

habe eine DLL in Delphi geschrieben, die ich jetzt in PB benutzen will.

Die benötigte Funktion "RandomInternetInteger" liefert einen string zurück, den ich in PB verarbeiten will, aber es funktioniert nicht ...

hier mein Code:

Code: Alles auswählen

OpenConsole()

  OpenLibrary(0,"dc_random.dll")

;function RandomInternetInteger(count : integer; min,max : integer; col : integer) : string; stdcall;
    string.s = CallFunction(0,"RandomInternetInteger",10,1,100,1)
    PrintN(integer$)

  CloseLibrary(0)

  Input()

CloseConsole()
 End
Beim Kompilieren gibt es ein Fehler in der zeile "string.s = CallFunction" => "Trying to write a numeric value into string variable"!

ps. Bin PB Neuling ... habt ein wenig nachsicht :cry:

Verfasst: 29.01.2005 21:43
von ChaOsKid
Hi DarkCrow,

ich glaube du kriegst von CallFunction() einen pointer auf einen string zurück
probier es mal so:

Code: Alles auswählen

String.s = PeekS(CallFunction(0,"RandomInternetInteger",10,1,100,1))
vielleicht hilft es...

mfG
Tobi

Verfasst: 29.01.2005 22:42
von Feudel
da hat chaoskid recht, unter win gibt es (so gut wie )immer einen pointer auf einen string zurück der mit chr(0) terminiert ist.

Verfasst: 29.01.2005 23:02
von DarkCrow
jab ... danke ... funktionier :allright:

ps. gibt es eigentlich einen vergleichbaren Typen wie PCHAR oder CHAR in PureBasic?

Verfasst: 29.01.2005 23:05
von Andre
DarkCrow hat geschrieben: ps. gibt es eigentlich einen vergleichbaren Typen wie PCHAR oder CHAR in PureBasic?
Eine kleine Übersicht zur Typ-Umwandlung findest Du hier: http://freak.purearea.net/help/wintypes.txt

Verfasst: 29.01.2005 23:22
von DarkCrow
danke ...

sorry, dass ich nochmal stör, aber ist es möglich, im MessageRequester mehrere Zeilen auszugeben?

z.B.
---
Programm XY
(c) by ZZ
---

dank euch!!!

Verfasst: 29.01.2005 23:30
von ChaOsKid

Code: Alles auswählen

MessageRequester("","Programm XY"+#CRLF$+"(c) by ZZ")

Verfasst: 29.01.2005 23:48
von ts-soft
Die Zeilen für den MessageRequester mit Chr(10) bzw. mit #LF$ trennen
Chr(13) bzw. #CR$ ist nicht nötig, und sollte wegen Linux-Kompatibilität weggelassen werden

Code: Alles auswählen

MessageRequester("","Programm XY"+#LF$+"(c) by ZZ")

Verfasst: 05.04.2005 17:29
von shim
Hallo!

Ich habe mich auch gerade an DLL's versucht, die einen String zurückliefern. Evtl. wäre eine kurze Überarbeitung des Handbuches ratsam, weil doch mit keinem Wort drinsteht, das der Pointer zurückgeliefert wird.

Ist ja auch eigentlich eleganter und wahrscheinlich schneller, aber ein kleiner Hinweis und evtl. ein Beipsiel wären wirklich nicht übel... Oder hab ich etwas überlesen?

Ansonsten hab ich es jetzt im Griff.

Viele Grüße

Lars