AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

%systemdrive% in delphi ansprechen??

Ein Thema von NeRoFiX · begonnen am 1. Jul 2004 · letzter Beitrag vom 9. Nov 2008
Antwort Antwort
NeRoFiX

Registriert seit: 30. Apr 2004
Ort: Saarland, Europe
43 Beiträge
 
Delphi 7 Enterprise
 
#1

%systemdrive% in delphi ansprechen??

  Alt 1. Jul 2004, 10:30
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??
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#2

Re: %systemdrive% in delphi ansprechen??

  Alt 1. Jul 2004, 11:05
Delphi-Quellcode:
GetWindowsDirectory(Windir, SizeOf(Windir));
SysDrive := ExtractFileDrive(StrPas(windir));
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: %systemdrive% in delphi ansprechen??

  Alt 1. Jul 2004, 12:16
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:
ShowMessage(ExpandEnvStr('%windir%')); Man kann auch was anhängen:
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.
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#4

Re: %systemdrive% in delphi ansprechen??

  Alt 8. Nov 2008, 12:23
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???!
Miniaturansicht angehängter Grafiken
clipboard_980.jpg  
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: %systemdrive% in delphi ansprechen??

  Alt 8. Nov 2008, 12:28
Anscheinend nicht, Du musst wohl oder übel die Umgebungsvariablen auflösen (ExpandEnvironmentStrings bzw. GetEnvironmentVariable).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: %systemdrive% in delphi ansprechen??

  Alt 8. Nov 2008, 15:41
Zitat von isilive:
Bei ShellExecute sollte es doch direkt funktionieren, oder???!
Nein wieso? Deine Umgebungsvariable steckt in einem String, wohe soll Shellexecute wissen, dass es eine Umgebungsvariable ist und nicht zum Verzeichnispfad gehört?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#7

Re: %systemdrive% in delphi ansprechen??

  Alt 9. Nov 2008, 04:05
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 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.
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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