Linux: zwei Pfade auf Gleichheit prüfen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
iaby
Beiträge: 24
Registriert: Mi 25. Okt 2006, 19:48

Linux: zwei Pfade auf Gleichheit prüfen

Beitrag von iaby »

Hallo zusammen,

ich stehe vor folgendem Problem:
Ich will überprüfen ob zwei Parameter, die eine Datei darstellen, auf ein und die selbe Datei zeigen.
Kurzes Beispiel: Parameter1= "dieDatei", Parameter2= "/home/user/dieDatei". Wird mein Programm jetzt von /home/user/ aus gestartet, so addressieren die zwei Parameter exakt die gleiche Datei!
Weiß jemand wie ich überprüfen kann, ob die zwei Dateien ein und die selbe ist?
Ich habs schon mit ExtractRelativePath und solchen Dingen versucht, bis jetzt aber leider noch nichts brauchbares erzielt :(
Wäre über Hilfe sehr dankbar!

Gruß,
iaby

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Zur Not hilft das Vergleichen der Inhalte der Datei...

(Zumindest kann man so Gleichheit im Sinne von gleichen Inhalt prüfen)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

if ((ExtractFilePath(Application.Exename)+Parameter1 = Parameter2)
or (Parameter1 = Parameter2) then
Showmessage('Juhu die dateien sind die gleichen !'+#13+'und ich muss keine Dateiinhalte vergleichen *Kopfschüttel*');
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Christian hat geschrieben:if ((ExtractFilePath(Application.Exename)+Parameter1 = Parameter2)
or (Parameter1 = Parameter2) then
Showmessage('Juhu die dateien sind die gleichen !'+#13+'und ich muss keine Dateiinhalte vergleichen *Kopfschüttel*');


Schade, dass Du die Frage nicht verstanden hast. Zwei gleiche Directories können mit unterschiedlichen Pfaden angesprochen werden. Das geht auch in Windows.

Ist der "aktuelle Pfad" z.B. "c:\test" und es gibt ein directory c:\test\1 dann ist

"c:1", "1", "test\1", "c:\test\1" "..\test\1" und ".\1" alles dasselbe directory.

-Michael

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich hab lediglich das oben beschriebene gefixt. Wenn man alle relativen pfade haben will geht das natürlich auch

if (ExpandFileName(Parameter1) = ExpandFileName(Parameter2) then
Showmessage('Juhu die dateien sind die gleichen !'+#13+'und ich muss keine Dateiinhalte vergleichen *Kopfschüttel*');

zudem kann man hier in beiden pfaden relative benutzen. Sollte mit allen deinen Beispielen funktionieren michael :p.

warum "test\1" ?? versteh ich net. Die anderen stimmen ja. Bis auf das .\ da bin ich mir nicht sicher unter Windows.

iaby
Beiträge: 24
Registriert: Mi 25. Okt 2006, 19:48

Beitrag von iaby »

ExpandFileName !
Genau sowas habe ich gesucht...
Danke euch

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Christian hat geschrieben: ... ExpandFileName...

Super !
Christian hat geschrieben:warum "test\1"

Man sollte nicht schneller tippen als denken :) natürlich "\test\1".

-Michael

Antworten