![]() |
string aus resource auslesen schlägt fehl...
moin
hab wieder mal ein updateresource problem :( ich schreibe mit folgendem code 2 strings in eine exe....
Delphi-Quellcode:
... dann will ich sie wieder auslesen mit folgender function....test1 := 'blabla'; test2 := 'huhu'; pResourceID := MakeIntResource('test1'); if not UpdateResource(hInst, RT_STRING, pResourceID, MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL), PWideChar(test1), Length(test1)) then MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOk], 0); pResourceID := MakeIntResource('test2'); if not UpdateResource(hInst, RT_STRING, pResourceID,MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL) , PWideChar(test2), Length(test2)) then MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOk], 0);
Delphi-Quellcode:
wenn ich mir nun string nr.1(test1) anschau is am ende immer ein __ dran gehängt: blabla_function TForm1.ReadResString( res: string ): string; var tmp: pchar; HI, HG: Cardinal; Resource: Pointer; pResourceID: PChar; begin pResourceID := MakeIntResource(res); HI := FindResource(hInstance, pResourceID, RT_STRING); if HI <> 0 then begin HG := LoadResource(hInstance, HI); if HG <> 0 then begin Resource := LockResource( HG ); if Assigned(Resource) then begin tmp := Resource; result := string(tmp); end; end; end else begin ShowMessage(SysErrorMessage(GetLastError)); Result := 'ERROR'; end; end;plus woran liegt das? wenn ich mir dann string nr.2(test2) wird immer das wort PAD rangehangen plus string 1 also so: huhuPADblabla_ was hab ich da falsch gemacht? |
Re: string aus resource auslesen schlägt fehl...
Versuche mal "Length(test1)+1" ... denn ohne die #0 am Ende wird der Rest bis zur ersten #0 noch als Teil des Strings erkannt.
Übrigens ist deine Routine (zum Auslesen) fragwürdig. Erstes Problem: man sollte SetString() benutzen statt einer Zuweisung. Zweite Sache: was passiert wenn der String als 2-Byte-String abgelegt ist (zB Unicode)? Dritte Sache: wenn der String #0 enthält, bekommst du nicht den kompletten String. Den bekämest du nur mithilfe der Länge der Ressource, nicht der Länge des Strings (bei dir implizit vorhanden). |
Re: string aus resource auslesen schlägt fehl...
thx für die hilfe es lag tatsächlich nur an die '+1' ;)
jetzt geht alles |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz