Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi %systemdrive% in delphi ansprechen?? (https://www.delphipraxis.net/25108-systemdrive-delphi-ansprechen.html)

NeRoFiX 1. Jul 2004 10:30


%systemdrive% in delphi ansprechen??
 
sorry habe dazu nichts im forum oder der hilfe von delphi finden können ..

ich kenne es nur aus der batch-programmierung das man das systemdrive mit %systemdrive% anspricht...

nur wie mache ich es delphi klar??

scp 1. Jul 2004 11:05

Re: %systemdrive% in delphi ansprechen??
 
Delphi-Quellcode:
GetWindowsDirectory(Windir, SizeOf(Windir));
SysDrive := ExtractFileDrive(StrPas(windir));

MathiasSimmack 1. Jul 2004 12:16

Re: %systemdrive% in delphi ansprechen??
 
Jetzt mal unabhängig davon, dass es für einige Umgebungsvariablen passende API-Funktionen gibt, das Umsetzen läuft mit "ExpandEnvironmentStrings". Für den MS-XML-Parser (bzw. dessen Prüffunktion ob XML überhaupt installiert ist) habe ich diese Funktion geschrieben:
Delphi-Quellcode:
  function ExpandEnvStr(const szInput: string): string;
  const
    MAXSIZE = 32768;
  begin
    SetLength(Result,MAXSIZE);
    SetLength(Result,ExpandEnvironmentStrings(pchar(szInput),
      @Result[1],length(Result)));
  end;
Sollte auch hier in der DP zu finden sein. Wie auch immer, ein Beispiel:
Delphi-Quellcode:
ShowMessage(ExpandEnvStr('%windir%'));
Man kann auch was anhängen:
Delphi-Quellcode:
ShowMessage(ExpandEnvStr('%windir%\help'));
Wie gesagt, in manchen Fällen gibt es passende Funktionen. Aber in einigen Fällen (etwa beim Auslesen von Werten in der Registry o.ä.) ist es möglich, dass der String eine Umgebungsvariable enthält. Und dann ist die o.g. Funktion evtl. nützlich.

isilive 8. Nov 2008 12:23

Re: %systemdrive% in delphi ansprechen??
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich möchte auch die %Environment% Variablen nutzen.

Das hier geht:
Delphi-Quellcode:
{ShellExecute(0,'open','rundll32.exe',
 'C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen c:\logo.jpg','',SW_SHOW);
Aber
Delphi-Quellcode:
{ShellExecute(0,'open','rundll32.exe',
 '%SystemRoot%\System32\shimgvw.dll,ImageView_Fullscreen c:\logo.jpg','',SW_SHOW);
bringt mir immer einen
'Fehler beim Laden von %SystemRoot%\System32\shimgvw.dll. Das angegebene Modul wurde nicht gefunden.'
Mit '%WindDir%' ist es genau so. Meine Umgebungsvariablen sind ok.

Ich würde schon gern die Variable benutzen, damit mein Programm auch auf Rechnern läuft, die Windows in einem anderen Verzeichnis installiert haben.

Bei ShellExecute sollte es doch direkt funktionieren, oder???! :wiejetzt:

DeddyH 8. Nov 2008 12:28

Re: %systemdrive% in delphi ansprechen??
 
Anscheinend nicht, Du musst wohl oder übel die Umgebungsvariablen auflösen (ExpandEnvironmentStrings bzw. GetEnvironmentVariable).

Luckie 8. Nov 2008 15:41

Re: %systemdrive% in delphi ansprechen??
 
Zitat:

Zitat von isilive
Bei ShellExecute sollte es doch direkt funktionieren, oder???! :wiejetzt:

Nein wieso? Deine Umgebungsvariable steckt in einem String, wohe soll Shellexecute wissen, dass es eine Umgebungsvariable ist und nicht zum Verzeichnispfad gehört?

isilive 9. Nov 2008 04:05

Re: %systemdrive% in delphi ansprechen??
 
Zitat:

Zitat von DeddyH
Anscheinend nicht, Du musst wohl oder übel die Umgebungsvariablen auflösen (ExpandEnvironmentStrings bzw. GetEnvironmentVariable).

Okay, dann werd' ich mich entweder auf C:\... fixieren, oder die Routine zum Auslesen einbauen, thx!

Zitat:

Zitat von Luckie
Deine Umgebungsvariable steckt in einem String, wohe soll Shellexecute wissen, dass es eine Umgebungsvariable ist und nicht zum Verzeichnispfad gehört?

Naja, hätte ja sein können - zum Beispiel an den %Prozentzeichen% ?! Wenn ich es an die Console schicke, dann ist es bei der Übergabe ja auch erstmal ein einziger String - in dem es die entsprechenden Environment-Variablen dann auflöst.

Wie auch immer - danke für die Info.


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