Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Langer Dateiname bzw. langer PathName in kurzen umwandeln (https://www.delphipraxis.net/79643-langer-dateiname-bzw-langer-pathname-kurzen-umwandeln.html)

Mackhack 25. Okt 2006 21:53


Langer Dateiname bzw. langer PathName in kurzen umwandeln
 
Hi,

ich kanns einfach nirgends finden hier aber ich weis es gibts schon 100e male hier. Wie kann ich den langen Dateinamen oder sogar besser einen zu langen Path in einen kurzen umwandeln?

Danke!

Sunlight7 25. Okt 2006 22:05

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Du meinst in ein 8+3 Format?

Dann mit GetShortPathName; :wink:

Mackhack 25. Okt 2006 22:13

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Wir kommen der Sache schon naeher. Ich suchte nach ShortPathName :-(

Hm gibts auch ne Funktion die sowas erzeugt? c:\Test\...\FileName.xxx?

Sunlight7 25. Okt 2006 22:25

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Ich denke mal, das es die sicher gibt, aber weil ich nicht weiß, wie die heißt habe ich mir mal selber ein Makro geschrieben :stupid:

Luckie 25. Okt 2006 22:26

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Zum Anzeigen ja. Entwedermit MSDN-Library durchsuchenDrawtext und dem Flag DT_PATH_ELLIPSIS oder mit einem WinAPI Static-Control und dem Stil SS_PATHELLIPSIS. Könnte auch eventuell mit der Komponente TStaticText und MSDN-Library durchsuchenSetWindowLong funktionieren.

Hawkeye219 25. Okt 2006 22:38

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Hallo Mackhack,

in der Unit FileCtrl gibt es die Funktion Delphi-Referenz durchsuchenMinimizeName.

Gruß Hawkeye

Hobby-Programmierer 25. Okt 2006 23:24

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Moin ...,
zumindest bei D6 ist die Hilfe sehr zurückhaltend, deshalb kurzes Bsp.
Delphi-Quellcode:
uses FileCtrl;

var Path: string;
begin
  Path:='c:\windows\system32\config\systemprofile\ntuser.dat';
  Label.Caption:=MinimizeName(Path, Label.Canvas, 50);

Mackhack 26. Okt 2006 17:34

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
MinimizeName ist genau das was ich brauche. Danke euch.

Mackhack 29. Okt 2006 01:14

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Hi,

gibts jetzt auch ne Moeglichkeit dass man den Pfad der im Prinzip nur aus c:\..\Appname.exe besteht wieder in seinen Vollstaendigen Namen zurueckzufuehren um ihn in einer xml-file zu speichern? Ginge es mit GetLongPathName?

Dank euch!

Sunlight7 29. Okt 2006 01:59

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Sofern ich das richtig verstehe, dann mit ExpandFileName, aber die Funktion macht nix anderes, als das aktuelle Verzeichnis als Pfad hinzuzufügen.

Andererseits, wozu? :shock:
Du hast doch den originalen Dateinamen, den Du nach MinimizeName übergibst :gruebel:
Speicher diesen, und verwende ihn wieder. :wink:

SirThornberry 29. Okt 2006 06:16

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
zurückführen geht nicht. MinimizeName kürzt den Pfad soweit bis er kurz genug für die Anzeige ist. Dadurch gehen natürlich einige Informationen verloren.
Aus "c:\test1\test2\test3\test4\abc.txt" wird dann zum Beispiel
"c:\...\abc.txt"
Wie man sieht ist aus der zweiten Angabe nicht wirklich ersichtlich wo die "abc.txt" liegt. Es könnte "c:\windoes.abc.txt" sein aber genau so "c:\test1\test2\test3\test4\abc.txt"

Mackhack 29. Okt 2006 20:28

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Doch es geht :mrgreen: Hab ich heute nacht ne Moeglichkeit gefunden mit GetFullPathName. Ich kann den Eintrag wieder komplett anzeigen lassen. Vlt. liegt es auch daran dass ich den Dateinamen gekuerzt in einer Listbox stehen habe und dort die Infos noch immer im Vollen Umfang gespeichert sind und nur gekuerzt angezeigt werden.

Sunlight7 29. Okt 2006 20:39

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Wozu GetFullPathName :shock: ?

Das geht dann doch auch ohne :zwinker:

Mackhack 29. Okt 2006 20:42

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Zitat:

Zitat von Sunlight7
Wozu GetFullPathName :shock: ?

Das geht dann doch auch ohne :zwinker:

Und wie?

Muetze1 29. Okt 2006 20:55

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Zitat:

Zitat von Mackhack
... und dort die Infos noch immer im Vollen Umfang gespeichert sind und nur gekuerzt angezeigt werden.

Wenn du die Informationen ungekürzt in vollem Umfang noch liegen hast, warum willst du dann von einem kurzen Namen wieder auf einen langen Namen kommen, wenn du doch einfach das Original bei dir vorliegen hast?

Mackhack 29. Okt 2006 21:02

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Weil ich den Pfad nicht in voller Laenge in der Listbox haben will weil sie relativ klein ist Ich habe die kompletten Pfade brauche umd sie fuer das Ausfuehren der Programme brauche sowie zum speichern dieser Infos in der xml file @Muetze1.

Aber wenn mir hier was besseres vorschlagen kann bitte nur zu!

Dank euch!

Sunlight7 29. Okt 2006 21:03

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
Zitat:

Zitat von Mackhack
Und wie?

Versuchs mal mit den Items der ListBox, von der Du gesprochen hast :zwinker:

Edit: Ach roter Kasten, wo warst Du? :roll:
Edit²: Das verstehe ich nicht?
ListBox ist klein :gruebel:
Du kannst da die volle Pfadlänge speichern und das mit den kurzen Namen in OwnerDraw selber zeichnen.

Muetze1 30. Okt 2006 01:02

Re: Langer Dateiname bzw. langer PathName in kurzen umwandel
 
1. Möglichkeit:

Zitat:

Zitat von Sunlight7
Du kannst da die volle Pfadlänge speichern und das mit den kurzen Namen in OwnerDraw selber zeichnen.

2. Möglichkeit:

In der Objects[] Eigenschaft der ListBox eine kleine Klasse o.ä. ablegen welche den kompletten Pfad zu dem Eintrag beinhaltet

3. Möglichkeit:

Eine extra Liste dazu halten und immer die ListBox von der Liste her aktuell halten.


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