API-Funktionen gesucht: Zahl in String konvertieren und umgekehrt, Stringlänge ermitteln
-
Ich suche ein paar WinAPI-Funktionen und zwar folgende:
- String in eine Zahl umwandeln
- Zahl in String umwandeln (der String ist die Länge von mciSendString, sollte also mit int reichen und in ein 32bit-Register passen)
- Stringlänge ermitteln (abgesehen von wsprintf)wird in ASM verwendet, daher kann ich keine C-Funktionen verwenden. Vor dem selber in ASM implementieren wäre es übersichtlicher für solche Funktionen API-Funktionen zu nehmen falls sie existieren.
Vielen Dank
-
In der shlwapi.dll gibt's eine Menge netter Stringfunktionen:
-
Super, danke; StrToInt scheint genau was ich gesucht habe. Gibt es da auch das Gegenstück dazu um eine Zahl zurück in einen String zu verwandeln?
-
Wie wäre es mit wsprintf?
-
Ah OK stimmt das sollte ja gehen!
Habe gerade ein Problem; ich habe folgenden Ausschnitt:getlength proc invoke mciSendString, addr status, addr sBuffer,255, 0 ;mov sBuffer[6],0 ;invoke StrToInt, sBuffer ret getlength endpdas Programm verabschiedet sich mit einem Fehler in Modul shlwapi.dll. Die auskommentierten Zeiken sind Versuche meinerseits das Problem zu beheben; ohne StrToInt funktioniert alles, die Zeit in Millisekunden wird auf dem Fenster mit TextOut ausgegeben was dann funktioniert. Ich frage mich wie die Länge des sBuffer ermittelt werden kann da die Funktion ja gleichzeitig den sBuffer und die Länge erwartet; habe ihn gleich mit 255 deklariert, versuchte es auch mit 6.
-
Da kann ich Dir leider nicht weiterhelfen, Assembler ist nicht gerade meine Leidenschaft.

-
Ist der Aufruf soweit aber richtig? Eigentlich sollten ein paar leere Zeichen nach dem eigentlichen String ja nicht stören, die Funktion wertet ja nur die erste gültige Zahl im String aus.
-
Müsste da nicht
invoke StrToInt, addr sBufferstehen, wenn ich den Aufruf mit mciSendString vergleiche?
-
Ach bin ich doof, danke
Das muss ich zu Hause versuchen; der String ist ja in dem Buffer und die Zahl danach in EAX.
Für wsprintf ist der Parameter %i richtig um eine Zahl darzustellen bzw. umzuwandeln?Danke
-
%i oder %li, je nachdem ob mit oder ohne Vorzeichen.
-
Super, danke; mit %i geht es problemlos.
-
sri schrieb:
%i oder %li, je nachdem ob mit oder ohne Vorzeichen.
%li ist aber auch mit Vorzeichen (das l besagt nur, daß du einen long einlesen willst) - %u steht für unsigned int.
-
Ups, danke für die Auflärung.
-
Wie geht es mit 32bit-Zahlen? Wäre noch schön wenn die Minuten nicht so stark gerundet würden da ich nur int-Zahlen verwende; über die FPU gehe ich ohnehin jetzt schon mit FIDIV.
-
Was sagt eigentlich der Forenbot hierzu?

-
C-Chris schrieb:
Was sagt eigentlich der Forenbot hierzu?

Was sollte der Forenbot denn gegen eine WinAPI-Frage im WinAPI-Forum haben?
