Hallo liebes Forum.
Ich habe folgenden Code aus einem API Beispiel eines Visitenkartenscanners:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| function CheckStatus(errorcode: integer; functionName: string): boolean; var errormessage: String; remedy: String; composedMsg: String; szmessage, szremedy: integer; retval: integer; begin szmessage := 256; szremedy := 256; errormessage := StringOfChar(' ', szmessage); remedy := StringOfChar(' ', szremedy); if (errorcode = CRTK_ERR_CANCELED) or (errorcode = CRTK_NO_TEXT) or (errorcode = CRTK_ERR_NO_IMAGE) then begin Result := False; exit; end; if (errorcode <> CRTK_SUCCESS) then begin
retval := CRTK_GetErrorMessage(errorcode, PChar(errormessage), szMessage, PChar(remedy), szRemedy); SetLength(errormessage, StrLen(PChar(errormessage))); SetLength(remedy, StrLen(PChar(remedy))); if (retval <> CRTK_SUCCESS) then composedMsg := functionName + ' failed because of an unexpected error: ' + IntToStr(errorcode) else composedMsg := functionName + ' failed because ' + errormessage + '. ' + remedy; MessageDlg(composedMsg, mtError, [mbOK], 0); Result := False; end else Result := True; end; |
Dieses Beispiel ist gefühlte 100 Jahre alt und funktionierte in der mit Delphi 6 kompilierten Demo auch super.
Wenn ich das jetzt mit meinem Delphi 2009 starte kommt da nur Kauderwelsch raus.
Wenn ich dann allerdings wiederum in der Variablendeklaration die 3 Strings auf
AnsiStringumstelle klappts wieder. Daher vermute ich mal, da haut was mit der Unicode-Umwandlung nicht hin.
Jetzt bin ich aber leider nicht so versiert, was dieses ganze Unicodezeug betrifft.
Wie müsste ich den Code denn ändern, dass mir Delphi das auch mit Unicode Strings macht?
Danke!
Matze
In the beginning was the word.
And the word was content-type: text/plain.