Seite 1 von 1
Pfad abkürzen
Verfasst: 04.11.2009 19:59
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?
Re: Pfad abkürzen
Verfasst: 04.11.2009 20:01
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
Re: Pfad abkürzen
Verfasst: 04.11.2009 20:05
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().
Re: Pfad abkürzen
Verfasst: 04.11.2009 20:13
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$
Re: Pfad abkürzen
Verfasst: 04.11.2009 20:21
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 ....
Re: Pfad abkürzen
Verfasst: 04.11.2009 20:24
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.
Re: Pfad abkürzen
Verfasst: 04.11.2009 20:29
von roherter
Danke an allen die geholfen haben.

Re: Pfad abkürzen
Verfasst: 04.11.2009 20:32
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...
Re: Pfad abkürzen
Verfasst: 04.11.2009 20:37
von Josh