Was muss inkludiert sein...?

Hmm, ich denke, da hat sich seit 16bit doch mehr verändert.
MAKELONG schneidet von dem oBuffer die oberen 16 bit ab, das gibt Krappes.
Dein (DWORD)oBuffer ist da schon besser.

Ich weiss leider nicht, wie ToolBook den String haben will. Aber ich denke, da müsste statt

dwOStr = (DWORD)oBuffer;

das stehen:

dwOStr = (DWORD)oStr;

(Wenn eine Warnung von wegen Datenverkürzung kommt, dann mach statt DWORD DWORD_PTR da rein)

Kannst du irgendwo in Erfahrung bringen, wie ToolBook den String erwartet? In der Original-Version ist ja kein Pointer weitergegeben worden, sondern ein HANDLE auf einen Speicherbereich im globalen Heap (was ich an sich schon seltsam finde).
Auch die Längen-Bytes werden ja eigentlich in dem Code nicht reingesetzt.
 
Ich hab auch schon bei google gesucht, aber über String-Verarbeitung/Speicherung in Toolbook vorerst nichts gefunden.
Theoretisch ist es kein Problem einen String in einer beliebigen Form im Speicher abzulegen, nur muss man halt genau wissen wie das Ergebnis aussehen soll.

Aber erstmal probier das mit dem letzten Tip aus.
Wenn das auch nicht geht könnte man noch im Speicher-Dump bei der Ausführung von Toolbook mal nach Strings und deren Speicherung schauen, aber das ist aufwendig und frimelig :)

@Manic: kreatives Schaffen soll man doch nicht abbrechen ;), also gehts bis morgens :eek:
 
Bei mir auf Arbeit kenne ich einen Mitarbeiter, der schon viele DLLs für die Benutzung unter ToolBox programmiert hat. Mal sehen was der dazu sagt.
 
Hallo und Danke, bisher klappt das allerdings noch nicht.

Aber ich hab' eine 400-seitige PDF-Datei gefunden :-) und darin ein Kapitel über genau das was ich will. Ich hab's mal angehängt (keine Panik, nur die 5 relevanten Seiten).

Ich hab die dort beschriebene Funktion OpenStrRet() in mein Projekt eingebaut. Soweit ich das beurteilen kann, macht die auch nix anderes als die andere Funktion, nur etwas ausführlicher mit Error-Handling und so. Oder seht ihr einen wesentlichen Unterschied? Wie dem auch sei: Der Effekt ist mit dieser Funktion der selbe: Leerstring oder NULL.

Allerdings ist die Erklärung dazu interessant. Ich versteh' das zwar nur zu etwa 80%, aber vielleicht kann einer von euch da rauslesen, wie eine VC++ 6-Umsetzung davon aussehen müsste.

Leute - das artet so langsam richtig in Arbeit aus für euch. Ich will euch nicht überbeanspruchen. Also Hilfe wäre sehr willkommen aber nur wenn ihr Zeit und Lust habt... sonst krieg' ich ein schlechtes Gewissen.

Martin

@Thomas: Danke für's googeln. Ich hab mir auch schon die Finger wund gesucht im Netz aber Toolbook ist eben schon ein ziemlicher Exot. Das einzig vernünftige ist eine Knowledge Base beim derzeitigen Toolbook-Vertreiber SumTotal: Hier. Die hab ich aber auch schon durchgewühlt, ich fürchte da ist nix zu holen. Die heißeste Spur bisher ist dieses PDF.

PS/Edit:
Oh, was ich noch vergessen habe: diese in dem PDF erwähnte POINTER-Geschichte klappt, nur das kann ich nicht brauchen, da meine DLL-Funktionen Strings "direkt" liefern müssen, ohne dass ich diese in TB mit pointerString() erst holen muss.
Und: Eigentlich, also in der Endlösung, arbeite ich ja in C++ mit CString-Objekten, muss also deren Inhalt exportieren. Die chars sind nur "der erste Schritt"...
 

Anhänge

Zuletzt bearbeitet:
Zurück