Pfad abkürzen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Pfad abkürzen

Beitrag von roherter »

Gibt es eine Api funktion um einen pfad abzukürzen zb. so

Normaler Pfad:
c:\eigene dateien\fotos\bild.jpg

Gekürzter Pfad:
c:\....\....\bild.jpg

Oder muss ich mir da selber eine funktion schreiben?
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Re: Pfad abkürzen

Beitrag von X360 Andy »

So eine änliche Funktion gibt es ( um die eine Frage schonmal zu beantworten )

Nur weiß ich gerade nicht wie sie heißt.

Sie macht aus soeinem Pfad :
C:\Program Files\Windows7\configuration\config.ini

So einem
C:\PROGRA~1\WINDOW~1\CONFIG~1\config.ini
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Pfad abkürzen

Beitrag von c4s »

Code: Alles auswählen

TextGadget(#Text, 0, 0, 100, 20, "C:\Langer Pfad Pfad Pfad\test\Datei.dat", #SS_NOTIFY | #SS_PATHELLIPSIS)
@Andy
Nein, ich denke das erzeugen von DOS-Pfaden meint er nicht. Eher das abkürzen des Pfades bei der anzeige im TextGadget().
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Re: Pfad abkürzen

Beitrag von X360 Andy »

Ja gut aber das könnte man doch aber auch ganz anders machen

z. B so
(Ich hab deine 2 Flags nicht versucht )

Code: Alles auswählen

Path$ = "C:\Windows\System32\drivers\es-ES"
PathLength = Len(Path$)
LeftPath$ = Left(Path$, PathLength/3)
RigthPath$ = Right(Path$,  PathLength/3)

Debug LeftPath$ + "..." + RigthPath$
Debug Path$
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Pfad abkürzen

Beitrag von STARGÅTE »

Ein regulärer Ausdruck ginge auch:

Code: Alles auswählen

If CreateRegularExpression(0, "[^\\]{5,}\\")
 Debug ReplaceRegularExpression(0, "C:\Program Files\Windows7\kurz\configuration\config.ini", "....\")
EndIf
der macht aus allen Ordnern die länger als 4 Zeichen sind ein ....
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Kai
Beiträge: 264
Registriert: 29.09.2005 20:58
Computerausstattung: iMac 2019
Wohnort: Hannover
Kontaktdaten:

Re: Pfad abkürzen

Beitrag von Kai »

Ich habe mir dafür folgende Procedure geschrieben.

Code: Alles auswählen

EnableExplicit

#Path = "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\TSPDesigner\DesignerFunction.dll"

OpenWindow(0, 0, 0, 200, 200, "Beispiel", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
TextGadget(0, 10, 10, WindowWidth(0) - 20, 15, #Path, #SS_LEFTNOWORDWRAP)

Procedure.s TextGadget_CompactPath(Gadget, Path$)
  If IsGadget(Gadget) And GadgetType(Gadget) = #PB_GadgetType_Text
    Static hDC.i, hFont.i, sResult.s
    
    hFont = SendMessage_(GadgetID(Gadget), #WM_GETFONT, 0, 0)
    hDC   = CreateCompatibleDC_(0)
    
    SelectObject_(hDC, hFont)
    
    If hFont And hDC
      PathCompactPath_(hDC, Path$, GadgetWidth(Gadget))
      
      sResult = Path$
    Else
      sResult = Path$
    EndIf
    
    DeleteDC_(hDC)
  EndIf
  
  ProcedureReturn sResult
EndProcedure

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_SizeWindow
      ResizeGadget(0, #PB_Ignore, #PB_Ignore, WindowWidth(0) - 20, #PB_Ignore)
      SetGadgetText(0, TextGadget_CompactPath(0, #Path))
    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver
Glaube genau das meint er.
Zuletzt geändert von Kai am 04.11.2009 20:34, insgesamt 1-mal geändert.
Meine Homepage - Aktuelle Projekte - Launcher
Letzte PB-Version - Window 7 x86
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Re: Pfad abkürzen

Beitrag von roherter »

Danke an allen die geholfen haben. :bounce:
Purebasic 5.0 32bit und 64 bit

I'm back from hell
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Pfad abkürzen

Beitrag von c4s »

X360 Andy hat geschrieben:Ich hab deine 2 Flags nicht versucht
Nur damit keiner verwirrt ist: Es geht auch ohne #SS_NOTIFY. Den Flag würde man halt z.B. für Tooltips brauchen...
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Antworten