AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Verzeichnisangaben mit enthaltenen Umgebungsvariablen

Verzeichnisangaben mit enthaltenen Umgebungsvariablen

Ein Thema von Der schöne Günther · begonnen am 16. Sep 2014 · letzter Beitrag vom 17. Sep 2014
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#1

AW: Verzeichnisangaben mit enthaltenen Umgebungsvariablen

  Alt 16. Sep 2014, 15:52
Ausserdem:
Befehle im CMD-Fenster ergeben andere Path-Variablen als wenn sie in einem WINDOWS-Programm aufgerufen werden.
Kannst du das mal näher erläutern? Ich wüsste nämlich nicht, wo da ein Unterschied herkommen soll. Umgebungsvariablen sind Umgebungsvariablen und die sind für alle Programme gleich, jedenfalls wenn die Programme diese nicht ändern.

MfG Dalai
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Verzeichnisangaben mit enthaltenen Umgebungsvariablen

  Alt 16. Sep 2014, 16:03
Oder die Programme die sie aufrufen ihnen andere Umgebungsvariablen mitgeben.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Verzeichnisangaben mit enthaltenen Umgebungsvariablen

  Alt 16. Sep 2014, 16:31
Verstehe jetzt dein Problem nicht.

Ich mach das auf diese weise und die API sollte eigentlich bekannt sein.

Code:
    'Setze den Pfad zum BassPath
    BassPath = "%Path%;" & App.Path & "\BassLib"
    SetEnvironmentVariable "Path", BassPath
Beispiel aus meinem Mediaplayer in VB.

gruss
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Verzeichnisangaben mit enthaltenen Umgebungsvariablen

  Alt 16. Sep 2014, 16:55
Es ging darum, ob man WinApi-Routinen (welche Pfade erwarten) eventuell auch mit bestehenden Umgebungsvariablen füttern kann. Nicht Umgebungsvariablen zu setzen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Verzeichnisangaben mit enthaltenen Umgebungsvariablen

  Alt 16. Sep 2014, 17:00
Es ging darum, ob man WinApi-Routinen (welche Pfade erwarten) eventuell auch mit bestehenden Umgebungsvariablen füttern kann. Nicht Umgebungsvariablen zu setzen
Jo und wenn nicht dann setzt man sie halt.
Bleibt doch das gleiche.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#6

AW: Verzeichnisangaben mit enthaltenen Umgebungsvariablen

  Alt 16. Sep 2014, 17:53
Um das klarzustelen:

Die meisten WinAPIs lösen keine Umgebungsvariablen auf.
Viel schlimmer noch, denn "%irgendwas%" ist (in langen Pfadangaben, also nicht die alten 8.3-DOS-Pfade) ein korrekter Datei-/Verzeichnisname,
was dann gern darin endet, daß komische Programme gern mal Verzeichnisse mit solchen Dateinamen anlegen.

Unbenannt.jpg


Und das Andere:
Jedes Programm (jeder Prozess) kann ein eigenes Set von Umgebungsvariablen besitzen.
Es bekommt es zwar meistens standardmäßig von deinem Aufrufer/Starter vererbt, aber der Prozess kann den Inhalt zur Laufzeit selber manipulieren, oder der Prozess bekomm beim Aufruf ein "anderes" Set mitgegeben.

In Delphi kennt man das z.B. als Delphi-Optionen > Umgebungsoptionen > Umgebungsvariablen > Vom Anwender überschrieben, welches dann für die IDE und von der IDE gestarteten Programmen gilt.



Und natürlich kann bei der Pfadbehandlung auch noch eine "manuelle" Behandlung von solchen "Variablen"-Platzhaltern implementiert sein, alternativ oder zusätzlich zu diesen Environment-Variablen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (16. Sep 2014 um 18:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Verzeichnisangaben mit enthaltenen Umgebungsvariablen

  Alt 16. Sep 2014, 17:14
Ausserdem:
Befehle im CMD-Fenster ergeben andere Path-Variablen als wenn sie in einem WINDOWS-Programm aufgerufen werden.
Kannst du das mal näher erläutern? Ich wüsste nämlich nicht, wo da ein Unterschied herkommen soll. Umgebungsvariablen sind Umgebungsvariablen und die sind für alle Programme gleich, jedenfalls wenn die Programme diese nicht ändern.

MfG Dalai
Würde mich jetzt aber auch interessieren, das Users<->Benutzer Gewurschtel ist es ja wohl nicht oder meinst Du das Codepage-Problem
Zitat:
C:\Users\xxxxx\Desktop>echo ³cksel
³cksel

C:\Users\xxxxxx\Desktop>pause
Zitat:
echo ücksel
pause
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#8

AW: Verzeichnisangaben mit enthaltenen Umgebungsvariablen

  Alt 16. Sep 2014, 17:47
Kann jeder selbst nachprüfen:

1. Im CMD-Fenster:
- path eingeben

2. Mit DELPHI:
Memo1.Lines.Add(System.SysUtils.GetEnvironmentVari able('path'));
überprüfen

3. Im CMD-Fenster:
- path C:\ eingeben
- path eingeben

4. Mit DELPHI:
Memo1.Lines.Add(System.SysUtils.GetEnvironmentVari able('path'));
überprüfen
--- keine Änderung!


Siehe Anhang...
Angehängte Grafiken
Dateityp: jpg PATH-Umgebungsvariable.jpg (253,5 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#9

AW: Verzeichnisangaben mit enthaltenen Umgebungsvariablen

  Alt 16. Sep 2014, 17:54
@hathor: Und weiter? Das zeigt doch nur, dass jedes Programm die Umgebungsvariablen beliebig ändern kann, ohne dass dabei die ursprünglichen Inhalte oder die Inhalte derselben Variablen in anderen Prozessen verändert werden! Das ist ein völlig normales Verhalten und auch von Delphi-Programmen (und anderen Programmen) aus nachvollziehbar. Öffne zwei Instanzen einer CMD und du wirst dieselben Ergebnisse erhalten.

IIRC gibt es eine API-Funktion, mit der man Änderungen an Umgebungsvariablen im System bekanntmachen kann und auch welche, mit denen man über solche Änderungen informiert werden kann; vermutlich sind das irgendwelche Messages.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Verzeichnisangaben mit enthaltenen Umgebungsvariablen

  Alt 16. Sep 2014, 21:56
@himitsu

Genau weil es sich um gültige Dateinamen handelt dürfen die WinApi-Funktionen das auch nicht automatisch auflösen. Genau aus dem Grund gibt es in der Registry auch den Value Type
REG_EXPAND_SZ
A null-terminated string that contains unexpanded references to environment variables (for example, "%PATH%"). It will be a Unicode or ANSI string depending on whether you use the Unicode or ANSI functions. To expand the environment variable references, use the ExpandEnvironmentStrings function.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 05:53 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-2025 by Thomas Breitkreuz