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. :bounce:

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