Newsgroup: it.comp.lang.visual-basic
Titolo: percorso relativo

\html\sito\html\pagina.html
\html\sito\img\image.jpg
\html\sito\sito.css
qual e' il modo piu' pulito, via commondialog, dirbox o altro, di
recuperare i percorsi relativi, per generare in pagina.html i link
../img/image.jpg
../sito.css
scusate se mi sono spiegato da schifo
--
grazie e ciao, j.

 scusate se mi sono spiegato da schifo
In effetti... Potresti fare un esempio (seriamente)?
CommonDialog restituisce il percorso completo, tu vuoi trattare quello come
stringa per ottenerne un'altra?

 ha scritto

 ../sito.css
Sembra banale ma non č cosě facile... devo avere il codice VB che ho
riportato dalla funzione di delphi... adesso la cerco...
Ciao
--
using System.Gtk.Forms = "
http://www.neodatatype.net/windowsforms/sgf.aspx
"
mathParser = "
http://www.neodatatype.net
"
sitoComune = "
http://www.it-lang-vb.net
"

 riportato dalla funzione di delphi... adesso la cerco...
grazie, j.

 grazie, j.
Ovviamente l'avevo perso... :)
Comunque eccolo rivisto in VB6 con l'ausilio della Split() incorporata.
Se ti interessa ti posso dare anche i sorgenti originali.
Ciao
-----
' Percorsorelativo = ExtractRelativePath(percorsoAttuale,
percorsoDestinazione)
Function ExtractFileDrive(ByVal FileName As String) As String
  Dim I As Integer
  Dim J As Integer
  If (Len(FileName) >= 2) And (Mid$(FileName, 2, 1) = ":") Then
    ExtractFileDrive = Mid$(FileName, 1, 2)
  ElseIf (Len(FileName) >= 2) And (Left$(FileName, 2) = "\\") Then
    J = 0
    I = 3
    Do While (I < Len(FileName)) And (J < 2)
      If Mid$(FileName, I, 1) = "\" Then J = J + 1
      If J < 2 Then I = I + 1
    Loop
    If Mid$(FileName, I, 1) = "\" Then I = I - 1
    ExtractFileDrive = Mid$(FileName, 1, I)
  Else
    ExtractFileDrive = ""
  End If
End Function
Function ExtractRelativePath(ByVal BaseName As String, ByVal DestName As
String) As String
    Dim BasePath As String
    Dim DestPath As String
    Dim BaseDirs() As String
    Dim DestDirs() As String
    Dim BaseDirCount As Long
    Dim DestDirCount As Integer
    Dim I As Long
    Dim J As Long
    If StrComp(ExtractFileDrive(BaseName), ExtractFileDrive(DestName),
vbTextCompare) = 0 Then
        BasePath = Mid$(BaseName, InStr(1, BaseName, ":", vbBinaryCompare) +
1)
        DestPath = Mid$(DestName, InStr(1, DestName, ":", vbBinaryCompare) +
1)
        BaseDirs = Split(BasePath, "\")
        BaseDirCount = UBound(BaseDirs)
        DestDirs = Split(DestPath, "\")
        DestDirCount = UBound(DestDirs)
        I = 0
        Do While (I < BaseDirCount) And (I < DestDirCount)
          If StrComp(BaseDirs(I), DestDirs(I), vbTextCompare) = 0 Then
            I = I + 1
          Else
              Exit Do
          End If
        Loop
        ExtractRelativePath = ""
        For J = I To BaseDirCount - 1
          ExtractRelativePath = ExtractRelativePath & "..\"
'{ Do not localize }
        Next J
        For J = I To DestDirCount - 1
          ExtractRelativePath = ExtractRelativePath + DestDirs(J) & "\"
'{ Do not localize }
        Next J
        DestName = Mid$(DestName, InStrRev(DestName, "\") + 1)
        DestName = Mid$(DestName, InStrRev(DestName, ":") + 1)
        ExtractRelativePath = ExtractRelativePath & DestName
    Else
        ExtractRelativePath = DestName
    End If
End Function


 stringa per ottenerne un'altra?
eccoci. dunque:
<html>
<head><title>200211</title>
<link rel=stylesheet href=/sunday.css type=text/css>
</head>
<body>
<center>
<p><a href=main.html target=fcenter>200211</a>
<p><a href="j2002_11_01_01_jpg.html" target=fcenter><img
src="tn_v/tn_j2002_11_01_01_jpg.jpg" border=0
alt="j2002-11-01_01.jpg - 164k - 03/11/2002 1.54.17"></a>
questo e' l'inizio di un indice a thubnails di javalab, hai presente,
credo, generato via vb.
al momento
1. css - ne ho messo uno in c:\ e uno in root di sundaysw, quindi no
prob.
2. immagini: le miniature le creo io, insieme alla subdir tn_v, quindi
va.
pero' mi piacerebbe dare la possibilita' di indicare p.e. un css o
un'immagine in una dir diversa. se per esempio, stando sempre su
sundaysw, volessi distinguere l'aspetto di javalab dalle altre
sezioni, dovrei usare qc come
    href=/sjl/jlab.css
e, conseguenza immediata, in locale non funziona piu'.
alternativa:
    href=../jlab.css
e puo' funzioanre anche in locale.
in genere, il path relativo puo'  (non sempre) semplificare le cose.
a questo punto alcune ipotesi:
1. l'utente scrive lui il percorso in un text e io linko quello.
sapendo quanto molti capiscono del filesystem, probabilita' di
successo scarsine.
2. usando l'index restituito dal dirlistbox crco di ricostruire il
percorso relativo. da piangere, ma si puo' fare.
3. si prendono i due path assoluti, e, previo ragionamento che non ho
ancora tentato, si girano in relativi:
a. /html/sundaysw/sjl/html/
b. /html/sundaysw/sjl/img/
da a, un'immagine in b sara' ../img/a.gif
ne parlavo con un amico mentre postavo e anche per lui e' stata la
prima idea.
anche qui c'e' un po' da lacrimare ma ci si salta fuori, forse in modo
piu' pulito che col dirbox.
altre idee ?
grazie, j.

 ha scritto nel messaggio
news:XnuF9.4718$fa.1...@news1.tin.it...

 Comunque eccolo rivisto in VB6 con l'ausilio della Split()
incorporata.
rigrazie, ma ci sono casini.
se da a chiedo il percorso b, mi restituisce si' dei ..\..\, ma alla
fine della stringa c'e' il percorso a, il che non dovrebbe.
stiamo provando in due a rivederlo.
se ci saltiamo fuori magari lo posto.
ciao, j.

 se ci saltiamo fuori magari lo posto.
Ummmh...
Proverò a darci un occhio, probabilmente ho sbagliato qualcosa nella
traduzione dal pascal.
Se vuoi nel frattempo ti posso dare i sorgenti originali come riferimento,
che sicuramente funzionano.
Ciao

 ha scritto
