string-Rückgabewert bei DLL

Für allgemeine Fragen zur Programmierung mit PureBasic.
DarkCrow
Beiträge: 18
Registriert: 04.01.2005 16:35
Wohnort: Altrip
Kontaktdaten:

string-Rückgabewert bei DLL

Beitrag 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:
Benutzeravatar
ChaOsKid
Beiträge: 66
Registriert: 29.08.2004 15:07
Wohnort: Oktoberfest

Beitrag 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
Feudel
Beiträge: 13
Registriert: 21.12.2004 23:06

Beitrag 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.
... hmmm
DarkCrow
Beiträge: 18
Registriert: 04.01.2005 16:35
Wohnort: Altrip
Kontaktdaten:

Beitrag von DarkCrow »

jab ... danke ... funktionier :allright:

ps. gibt es eigentlich einen vergleichbaren Typen wie PCHAR oder CHAR in PureBasic?
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag 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
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
DarkCrow
Beiträge: 18
Registriert: 04.01.2005 16:35
Wohnort: Altrip
Kontaktdaten:

Beitrag 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!!!
Benutzeravatar
ChaOsKid
Beiträge: 66
Registriert: 29.08.2004 15:07
Wohnort: Oktoberfest

Beitrag von ChaOsKid »

Code: Alles auswählen

MessageRequester("","Programm XY"+#CRLF$+"(c) by ZZ")
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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")
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
shim
Beiträge: 65
Registriert: 12.09.2004 23:09

Beitrag 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
Antworten