AW: Das Handle ist ungültig
Delphi-Quellcode:
hoffe es hilft!
function GetEnvVarValue(const VarName: string): string;
var BufSize: Integer; // buffer size required for value begin // Get required buffer size (inc. terminal #0) BufSize := GetEnvironmentVariable(PChar(VarName), nil, 0); if BufSize > 0 then begin // Read env var value into result string SetLength(Result, BufSize - 1); GetEnvironmentVariable(PChar(VarName), PChar(Result), BufSize); end else // No such environment variable Result := ''; end; procedure TForm1.Button1(Sender: TObject); begin ShowMessage(GetEnvVarValue('SystemRoot')); end; edit
Delphi-Quellcode:
function ExpandEnvironment(const strValue: string): string;
var chrResult: array[0..1023] of Char; wrdReturn: DWORD; begin wrdReturn := ExpandEnvironmentStrings(PChar(strValue), chrResult, 1024); if wrdReturn = 0 then Result := strValue else begin Result := Trim(chrResult); end; end; |
AW: Das Handle ist ungültig
Diese Funktion beinhaltet die API ExpandEnvironmentStrings doch schon warum mehr schreiben als nötig?
Dann kann ich auch diese von HolgerX verwenden das funktioniert. ;) PS: Danke habe die zweite variante mit dem Array versucht Ok funktioniert es wäre ein Fehler wenn die Rückgabe 0 ist. so ist es richtig.
Delphi-Quellcode:
Manchmal wirklich :wall:
procedure TAudioVolume.LoadIconPathfromResource(IconPath: PWideChar);
var Module: HModule; Filename: WideString; lpDest: array[0..MAX_PATH] of WideChar; StrID: string; ID: DWORD; begin // Remove First @ Letter Filename := MidStr(IconPath, 2, Length(IconPath)); // Extract ID StrID := MidStr(Filename, Length(Filename) - 2, 4); ID := StrToInt(StrID); // Remove ID from Path Filename := LeftStr(Filename, Length(Filename) - 5); FillChar(lpDest, SizeOf(lpDest), 0); if ExpandEnvironmentStrings(PWideChar(Filename), lpDest, Length(lpDest)) <> 0 then begin // Load the Lib Module := LoadLibraryExW(lpDest, 0, LOAD_LIBRARY_AS_DATAFILE); // check for error if Module <> INVALID_HANDLE_VALUE then begin Icon := TIcon.Create; Icon.Handle := LoadIcon(Module, MakeIntResource(ID)); if Module <> 0 then FreeLibrary(Module); end; end; end; gruss |
AW: Das Handle ist ungültig
Delphi-Quellcode:
sicher das Length(lpDest) ausreicht? in meinem Beispiel wird von einem maximal wert ausgegangen und dann mit trim() gekürzt.
ExpandEnvironmentStrings(PWideChar(Filename), lpDest, Length(lpDest))
|
AW: Das Handle ist ungültig
Zitat:
Es heißt ja nicht umsonst MAX_PATH oder? gruss |
AW: Das Handle ist ungültig
Ich bin der Meinung EnvironmentStrings unterliegen nicht diesem Limit, ein Test kann ja nicht Schaden.
Zitat:
|
AW: Das Handle ist ungültig
Zitat:
Ok spätestens wenn es kracht was ich nicht glaube kann man es immer noch ändern. OK.. Hier geht es jetzt weiter da wir das Thema mittlerweile um längen überschritten haben was das eigentlich Thema "Das Handle ist ungültig" betrifft. gruss |
AW: Das Handle ist ungültig
Meine Funktion zu ExpandEnvironmentStrings sieht so aus (ich glaub, die hab ich schonmal gepostet):
Delphi-Quellcode:
Grüße
function ExpandEnvStr(const sInput: string): string;
const MAXSIZE = 32768; // laut PSDK sind 32k das Maximum begin SetLength(Result, MAXSIZE); SetLength(Result, ExpandEnvironmentStrings(PChar(sInput), @Result[1], Length(Result))-1); //-1 um abschließendes #0 zu verwerfen end; Dalai |
AW: Das Handle ist ungültig
Zitat:
Mein letzter Post hier der Rest bitte hier weiter das Ergebnis könnt ihr hier laden. Es nimmt sonst kein Ende ;) Danke! Die 100 muss ich nicht unbedingt haben. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz