Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Skracanie długich ścieżek
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004
Skracanie długich ścieżek

Witam

Czy istnieje jakaś funkcja pokazująca skróconą ścieżkę. Nie wiem czy dobrze się wyraziłem więc np.

Moja ścieżka: "C:\WINDOWS\system32\ReinstallBackups\0000\DriverFiles"

I funkcja miałaby zamienić tą ścieżkę na np.

"C:\WINDOWS\...\0000\DriverFiles"

Mam nadzieję, ze jasne

P.S. Wiem że można to zrobić samemu ale po co skoro może istnieje jakaś funkcja

Pozdrawiam


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

24-03-2005 13:22
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

A po co się męczyć i pisać pytanie na forum

No nie, LUDZIE, to forum jest po to, byśmy trochę wytężyli swoje umysły!!!

Proponuję, byś spróbował coś napisać, a inni podpowiedzą Ci, jeśli nie będziesz umiał sobie z tym poradzić.

Mam więc do Ciebie DJK i innych pytanie: Co się stało z Waszą pasją, motywacją do pisania kodu?


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

24-03-2005 20:05
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Odpawiam - nie zatraciłem pasji ani nic z tych rzeczy - a pytam o gotową fukcję API bo:

1. Po to są funkcje API aby z nich korzystać;
2. Problem, który poruszyłem jest niczym w porównaniu do całego projektu (po co sobie zaprzątać głowę czymś co jest mało istotne )

Acha jeszcze jedno - korzystanie z gotowej funkcji API nie zawsze jest takie proste jak się wydaje

P.S. Problem jest rozwiązany - nie znalazłem funkcji API tylko kod napisany w DELPHI (oczywiście przerobiłem go na VB)

[Post edytowany dnia 25-03-2005 00:16 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

25-03-2005 00:15
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003


... Problem jest rozwiązany - nie znalazłem funkcji API tylko kod napisany w DELPHI (oczywiście przerobiłem go na VB)


To dawaj go tu na forum

Smacznego Jajka!


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

26-03-2005 12:45
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

A proszę :

Private Function CutPath(ByVal sPath As String, ByRef iCount As Integer) As String
Dim Pos As Integer
Dim Index As Integer

Do
      Pos = InStr(1, sPath, ""
      sPath = Replace(sPath, Mid$(sPath, 1, Pos), ""
      If Pos <> 0 Then Index = Index + 1
      If (Index = iCount) And (iCount <> 0) Then Pos = 0
Loop Until Pos = 0

iCount = Index
CutPath = sPath
End Function

Public Function GetShortPath(ByVal sPath As String, ByVal MaxLength As Integer) As String
Dim Num As Integer
Dim NewNum As Integer
Dim Pos As Integer
Dim tmpPath As String
Dim PathIsDir As Boolean

If Right$(sPath, 1) = "" Then
    sPath = Left$(sPath, Len(sPath) - 1)
    PathIsDir = True
Else
    PathIsDir = False
End If


Call CutPath(sPath, Num)

While Len(sPath) > MaxLength And (Num > 2)
    NewNum = Num / 2
    tmpPath = sPath
    tmpPath = CutPath(tmpPath, NewNum)
    Pos = InStr(sPath, tmpPath)
    sPath = Replace(sPath, Mid(sPath, Pos, Len(tmpPath)), ""
    NewNum = 2
    tmpPath = CutPath(tmpPath, NewNum)
    sPath = sPath + "..." + tmpPath
    Num = Num - 1
Wend


If Len(sPath) > MaxLength Then
    If PathIsDir Then
        sPath = Left$(sPath, MaxLength - 3) & "..."
    Else
End If


End If

GetShortPath = sPath
End Function


Niektóre linie (czerwone) dodałem od siebie - w ogóle zmieniłem co nieco.

Także pozdrawiam i wszystkiego naj...

[Post edytowany dnia 26-03-2005 12:53 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

26-03-2005 12:50
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
bisiek




Typ: neutral
Postów: 487
Zarejestrowany: Jul 2003

Ja bym to zrobił prościej:

Function sPath(lPath As String) As String
If Len(lPath) > 50 Then
a = Split(lPath, "\"
sPath = a(0) & "\" & a(1) & "\ ... \" & a(UBound(a) - 1) & "\" & a(UBound(a))
If Len(sPath) > 50 Then sPath = a(0) & "\ ... \" & a(UBound(a))
End If

End Function

[Post edytowany dnia 26-03-2005 14:05 przez bisiek]


_____________________________________________
www.mob.abc.pl - moja strona o VB

26-03-2005 13:59
Pokaż profil bisiek  Wyślij email do bisiek   Odwiedź stronę bisiek       3380672
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

To twoje rozwiązanie nie działa np. dla scieżki:

"Crogram Filestxt.rrtyt" zwraca

"Crogram Files \... \Program Filestxt.rrtyt"

Poza tym nie jest optymalne bo obcina od razu drugi katalog a w moim kodzie funkcja działa tak, ze obcina mniej więcej po środku, poza tym nie obcina wszystkiego gdy np. ścieżka jest dłuższa od 50 tylko sprawdza czy można jeszcze upchać jakiś katalog, tak by nie wyjść poza 50 i pokazać jak najwięcej ze ścieżki

[Post edytowany dnia 26-03-2005 14:15 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

26-03-2005 14:13
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Co jest z tym formatowaniem tekstu na forum - coś jest nie tak


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

26-03-2005 14:16
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
bisiek




Typ: neutral
Postów: 487
Zarejestrowany: Jul 2003

Dla C:\rogram Filestxt.rrtyt" można łatwo poprawić. Twój jest lepszy, ale mój jest krótszy, a zawsze staram się optymalizować kod.


_____________________________________________
www.mob.abc.pl - moja strona o VB

26-03-2005 14:33
Pokaż profil bisiek  Wyślij email do bisiek   Odwiedź stronę bisiek       3380672
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Krótki nie znaczy zoptymalizowany


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

26-03-2005 14:37
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
Wszystkich odpowiedzi: 9 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1