Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kann Pfad in Label.Caption nicht ausgeben (https://www.delphipraxis.net/171654-kann-pfad-label-caption-nicht-ausgeben.html)

Codix32 17. Nov 2012 13:09

Delphi-Version: 2005

Kann Pfad in Label.Caption nicht ausgeben
 
Hallo und ich werde gleich mal schamhaft rot, aber:

Ich kann tatsächlich keinen Dateipfad im Label ausgeben, wenn die Datei im selben Ordner wie das Programm liegt.

Delphi-Quellcode:
Label1.caption:='.....' + ExtractRelativePath('Uebersicht.txt','');
{oder:}
Label1.caption:='.....' + ExtractFilePath('Uebersicht.txt');
Beide liefern nur das '.....' und einen Leerstring, aber keinen Pfad.

Welche Procedur oder Function gibt mir in diesem Fall den Pfad an?

mkinzler 17. Nov 2012 13:19

AW: Kann Pfad in Label.Caption nicht ausgeben
 
Im String ist nunmal kein Pfad enthalten, den die Funktioen(en) extrahieren könnten

Andreas L. 17. Nov 2012 13:28

AW: Kann Pfad in Label.Caption nicht ausgeben
 
Delphi-Quellcode:
Label1.caption:='.....' + ExtractFilePath(Application.ExeName) + 'Uebersicht.txt';
Label1.Refresh;

Jonas Shinaniganz 17. Nov 2012 13:35

AW: Kann Pfad in Label.Caption nicht ausgeben
 
Also du rufst hier: ExtractFilePath() auf und übergibst: 'Uebersicht.txt'.

Übergebe mal: 'C:/Dokumente/Uebersicht.txt'' an die Funktion.

Dann frag dich mal, was die Funktion macht ;)

Grüße.

Sir Rufo 17. Nov 2012 14:02

AW: Kann Pfad in Label.Caption nicht ausgeben
 
Zitat:

Zitat von Jonas Shinaniganz (Beitrag 1191683)
Also du rufst hier: ExtractFilePath() auf und übergibst: 'Uebersicht.txt'.

Übergebe mal: 'C:/Dokumente/Uebersicht.txt'' an die Funktion.

Dann frag dich mal, was die Funktion macht ;)

Grüße.

Ist ungefähr so, wenn ich in einer Apfelplantage die Birnen zählen lasse und mich wundere, dass als Endresultat 0 herauskommt :)

Codix32 17. Nov 2012 14:15

AW: Kann Pfad in Label.Caption nicht ausgeben
 
Ok, ich sagte ja, daß die Funktionen einen Leerstring ausgeben, das habe ich schon verstanden.

Aber das Programm und die Datei liegen im Ordner c:\borland\myProggis\Test und ich suche eine Möglichkeit diesen Pfad in einem Label anzuzeigen.

Muss ich da die WinApi durchstöbern? :oops:

mkinzler 17. Nov 2012 14:19

AW: Kann Pfad in Label.Caption nicht ausgeben
 
Den Pafd zur Exe stehet in ParamStr(0) bzw. Application.Exename

Codix32 17. Nov 2012 17:17

AW: Kann Pfad in Label.Caption nicht ausgeben
 
Zitat:

Zitat von mkinzler (Beitrag 1191697)
Den Pafd zur Exe stehet in ParamStr(0) bzw. Application.Exename

Ok, dann könnte ich sowas machen...
Delphi-Quellcode:
if FileExists('Uebersicht.txt') then
begin
  if extractFileDir('Uebersicht.txt') <> ''
    then Label1.caption:= extractFileDir('Uebersicht.txt')
  else
    Label1.Caption:= Paramstr(0);
Hm, aber Paramstr(0) gibt mir auch den Dateinamen der Programm.exe aus und ich möchte nur den Pfad.

Bummi 17. Nov 2012 17:24

AW: Kann Pfad in Label.Caption nicht ausgeben
 
lies nochmals #2 und #3 durch ...

Codix32 17. Nov 2012 17:31

AW: Kann Pfad in Label.Caption nicht ausgeben
 
Ok, ich habs:

Delphi-Quellcode:

var
 str:string;
....
begin
if FileExists('Uebersicht.txt') then
begin
str:=Paramstr(0);
Label1.caption:=('Datei existiert')+'   '+ ExtractFileDir(str);
Listbox1.items.LoadFromFile('Uebersicht.txt');
end
else Label1.caption:='Datei existiert nicht';
end;

Bummi 17. Nov 2012 17:40

AW: Kann Pfad in Label.Caption nicht ausgeben
 
Delphi-Quellcode:
var
  str: string;
begin
  str := ExtractFilePath(ParamStr(0)) + 'Uebersicht.txt';
  if FileExists(str) then
  begin
    Label1.caption := ('Datei existiert') + ' ' + str)
    Listbox1.items.LoadFromFile(str);
  end
  else Label1.caption := 'Datei existiert nicht';
end;

cookie22 17. Nov 2012 18:26

AW: Kann Pfad in Label.Caption nicht ausgeben
 
Delphi-Quellcode:
str := ExtractFilePath(ParamStr(0)) + 'Uebersicht.txt';

himitsu 17. Nov 2012 18:36

AW: Kann Pfad in Label.Caption nicht ausgeben
 
Zitat:

Zitat von Codix32 (Beitrag 1191718)
Ok, ich habs

Falsch.

Wie bereits genannt, solltest du unbedingt von relativen Pfaden Abstand nehmen, das bereitet eh nur Probleme.



Tipp:
Lege mal probehalber einen TOpenDialog auf deine Form und dann schreib
Delphi-Quellcode:
OpenDialog1.Execute;
an den Anfang deiner Prozedur. (vor das
Delphi-Quellcode:
if FileExists...
).
Nun startest du dein Programm und wählst in diesem Dialog z.B. irgendeine Datei in C:\Windows aus.
Und jetzt freu dich darüber, daß dein FileExist nichts mehr findet. :stupid:

Oder statt des Opendialog, erstellst du einen Link zu deinem Programm (auf'm Desktop rechtklick > Neu > Verknüpfung).
Wenn diese Existierst, gehst du davon in die Dateieigenschaften und schreibst bei "Ausführen in" das "C:\Windows" rein.
Nach dem Starten des Programms kannst du dich ebenfalls über das Nichtauffinden freuen.

Perlsau 17. Nov 2012 21:30

AW: Kann Pfad in Label.Caption nicht ausgeben
 
Zitat:

Zitat von Codix32 (Beitrag 1191677)
Hallo und ich werde gleich mal schamhaft rot, aber:
Ich kann tatsächlich keinen Dateipfad im Label ausgeben, wenn die Datei im selben Ordner wie das Programm liegt.
Delphi-Quellcode:
Label1.caption:='.....' + ExtractRelativePath('Uebersicht.txt','');
{oder:}
Label1.caption:='.....' + ExtractFilePath('Uebersicht.txt');
Beide liefern nur das '.....' und einen Leerstring, aber keinen Pfad.
Welche Procedur oder Function gibt mir in diesem Fall den Pfad an?

Wenn dein Delphiprogramm die Datei Uebersicht.txt findet, dann ist das Zufall, weil dein Programmverzeichnis, in dem sich die Datei befindet, gerade ausgewählt ist. Dein Programm kennt aber nicht den vollständigen Dateinamen der Datei Uebersicht.txt, solange du dem Programm diesen nicht mitteilst. Dein Programm weiß also nicht von alleine, welche Dateien in welchen Ordnern stehen, das mußt du erst via Code ermitteln. Deshalb kannst du auch kein ExtractFilePath auf einen Dateinamen ohne Pfadangaben machen, denn diese Funktion soll ja den Pfad aus dem vollständigen Dateinamen extrahieren, und wenn da kein Pfad drin ist, dann heißt das Ergebnis Leerstring. Die Funktion ExtractFilePath hat nichts mit dem Windows-Dateisystem zu tun, sondern separiert einfach aus einem String eine bestimmte Struktur, völlig unabhängig davon, ob da irgendwo entsprechende Pfade oder Dateien existieren.

Na, Denkfehler erkannt?


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