Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Umgebungsvariable (https://www.delphipraxis.net/176601-problem-mit-umgebungsvariable.html)

Ondeth 16. Sep 2013 11:41

Delphi-Version: XE2

Problem mit Umgebungsvariable
 
Hallo Leute,
ich bin (mal wieder) etwas ratlos... :-D

Wenn ich diesen Codeschnipsel :
Code:
showmessage(getenvironmentvariable('HOMEPATH')+'\Desktop\');
ausführen will, wird mir im Fenster zwar der Pfad , aber ohne die Laufwerksbezeichnung angezeigt :
Code:
\Users\Ondeth\Desktop\
So verhält es sich (logischerweise) auch bei
Delphi-Quellcode:
ShellExecute
- der Desktop bzw Programme darin werden nicht mehr geöffnet bzw gestartet, da die Laufwerksbezeichnung fehlt...

Die Umgebungsvariable HOMEDRIVE funktioniert in diesem Programm plötzlich gar nicht mehr.

Hat jemand eine Idee, woran es hängen könnte? - Unfähigkeit meinerseits oder von Delphi ? :lol:

Wäre für "Denkanstöße" dankbar :thumb:

Uwe Raabe 16. Sep 2013 11:51

AW: Problem mit Umgebungsvariable
 
Bei mir hat HOMEPATH auch kein Laufwerk - aber schon im Environment nicht. Daher kann Delphi da auch nicht mehr rausholen.

Warum verwendest du nicht TPath.GetHomePath aus IOUtils oder wenigstens GetHomePath aus SysUtils?

Ondeth 16. Sep 2013 12:12

AW: Problem mit Umgebungsvariable
 
Delphi-Quellcode:
TPath.GetHomePath
bringt mir aber doch eigentlich nichts , wenn ein Teil meiner Programmdateien noch auf dem Desktop liegen .... Oder doch? :?

Jetzt bin ich verwirrt :-D

Uwe Raabe 16. Sep 2013 12:28

AW: Problem mit Umgebungsvariable
 
Zitat:

Zitat von Ondeth (Beitrag 1228669)
[DELPHI]Jetzt bin ich verwirrt :-D

Sorry, das mit dem Desktop hatte ich nicht richtig wahrgenommen.

In dem Fall kann man aber selbst Hand anlegen:

Delphi-Quellcode:
uses
  Winapi.SHFolder, Winapi.ShlObj;

function GetDesktopPath: string;
var
  LStr: array[0 .. MAX_PATH] of Char;
begin
  SetLastError(ERROR_SUCCESS);

  if SHGetFolderPath(0, CSIDL_DESKTOPDIRECTORY, 0, 0, @LStr) = S_OK then
    Result := LStr;
end;

Ondeth 16. Sep 2013 12:33

AW: Problem mit Umgebungsvariable
 
Kein Problem :)

Jetzt, wenn man's so sieht, ist es eigentlich klar :-D

Danke :thumb:

hathor 16. Sep 2013 13:38

AW: Problem mit Umgebungsvariable
 
Oder so:

Delphi-Quellcode:
VAR hd, hp : STRING;
BEGIN
hd:= GetEnvironmentVariable('HOMEDRIVE');
hp:= GetEnvironmentVariable('HOMEPATH');
Memo1.lines.add(hd+hp+'\Desktop');

DeddyH 16. Sep 2013 13:41

AW: Problem mit Umgebungsvariable
 
Das würde ich eher nicht empfehlen. Wer garantiert einem, dass der Desktop nicht in Windows 9/10/11 plötzlich "UserDesktop" oder "WerKratztMichMalHinten" heißt?

Ondeth 16. Sep 2013 13:45

AW: Problem mit Umgebungsvariable
 
@hathor Das hätte ich auch gesagt, nur funktioniert in diesem Programm die Umgebungsvariable HOMEDRIVE komischerweise nicht :wink:

@DeddyH Das stimmt allerdings - Bei Windows kann man sich nie wirklich sicher sein :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:30 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