Thema: Delphi C: = C:\Windows\System32

Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#10

Re: C: = C:\Windows\System32

  Alt 13. Feb 2009, 14:37
Hallo,

was passiert denn, wenn Du Dein Programm mal dahingehend änderst:
Delphi-Quellcode:
begin
  writeln('Input: "C:"');
  writeln('SysUtils.ExpandFileName : ',SysUtils.ExpandFileName('C:'));
  writeln('WideString ExpandFileName: ',ExpandFileName('C:'));
  writeln('AnsiString ExpandFileName: ',ExpandFileNameA('C:'));
  writeln('Fixed Buffer Size ExpandFileName: ',ExpandFileName3('C:'));
  ChDir('C:\Temp\');
  writeln('Input: "C:"');
  writeln('SysUtils.ExpandFileName : ',SysUtils.ExpandFileName('C:'));
  writeln('WideString ExpandFileName: ',ExpandFileName('C:'));
  writeln('AnsiString ExpandFileName: ',ExpandFileNameA('C:'));
  writeln('Fixed Buffer Size ExpandFileName: ',ExpandFileName3('C:'));
  readln;
end.
Ist das Ergebnis unverändert?

Habe das Ganze mal mit Delphi 7 kompiliert und aus der IDE gestartet. Dann steht alles auf C:\.
Dann habe ich das Programm über eine CMD, die ich aus dem WindowsCommander aufgerufen habe gestartet. Dann bekomme ich überall den Pfad, in den ich zuletzt mit dem WindowsCommander auf C: gewechselt bin. Das lässt sich durch Verzeichniswechsel im WindowsCommander und anschließendem neuen Aufruf von cmd und dann Programmstart wiederholen.
Das Verhalten ist identisch, wenn ich das Programm aus dem WindowsCommander durch Doppelklick starte, ohne zusätzliche CMD.
Starte ich das Programm über Ausführen, so erhalte ich überall C:\, da ausführen (soweit ich weiß) über den Explorer geht und der beim Start auf C:\ steht.

Das Ganze kannst Du auch über den Explorer nachvollziehen.
Starte ihn mal und wechsle auf C:.
Dann gibst Du als Adresse Dein Programm an und startest es. Du solltest überall C:\ erhalten.
Nun wechselst Du im Explorer auf C:\Programme.
Dann gibst Du als Adresse Dein Programm an und startest es. Du solltest überall C:\Programme erhalten.

Oder auf einen einfachen Nenner gebracht: Über die Angabe von C: erhälts Du das Verzeichnis, in das die Dein Programm aufrufende Shell zuletzt auf C: gewechselt ist. Dies setzt sich über mehrere voneinander aufgerufene Shells so fort. Ggfls ist dann halt auch mal Delphi die Shell, die Dein Programm aufruft.

Der Hinweis von himitsu aus Post #3 ist durchaus korrekt.
  Mit Zitat antworten Zitat