Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Eine Programmiertechnische Herausforderung

Forumthread: Eine Programmiertechnische Herausforderung

Eine Programmiertechnische Herausforderung
29.03.2006 22:28:59
Martin
Liebe Mitglieder,
dies hier stellt eine extreme Herausforderung dar.
Dabei ist das Problem sehr simpel:
Ich habe einen Linkchecker, der rekursiv checken kann.
- Das ist realisiert.
Nehmen wir zum Beispiel einen Link, den der Checker aus dem Quelltext einer Seite extrahiert:
../../style/red.css
Und außerdem steht mir die Quelladresse zur Verfügung:
"http://www.test.de/gardens/winter/usingredstyle.htm"
Jetzt sollen also zwei Directories höher gegangen werden:
"http://www.test.de/style/red.css"
Am Besten sollte dies über eine Function realisiert werden.
Ergebnis = MakeAbsoluteLink("http://www.test.de/gardens/winter/usingredstyle.htm", "../../style/red.css")
Ergebnis wird dann so lauten:
"http://www.test.de/style/red.css"
Die Function soll aber auch Link-Stücke wie "/styler/box.php" oder "test.php" bearbeiten können.
Kann mir jemand Hilfestellung bezüglich der Linkumwandlung geben.
Könnte mir jemand helfen?
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eine Programmiertechnische Herausforderung
29.03.2006 23:55:42
Ramses
Hallo
Also eine Herausforderung, grundsätzlich :-), ist das ja nicht gerade.
Was meinst du mit:
"...Die Function soll aber auch Link-Stücke wie "/styler/box.php" oder "test.php" bearbeiten können...."
Verstehe ich nicht.
Mal einen Ansatz:
Entweder mit "InstRev" den String von hinten her zerlegen, oder mit "Split" den String in ein Array aufbrechen, und mit einer Schleife bis zwei Stufen höher wieder zusammenbauen
Sub Reduce_Link()
    Dim linkarr() As String, tmpStr As String
    Dim i As Integer, stepUp As Integer
    '2 Stufen höher
    stepUp = 2
    linkarr = Split("http://www.office.gmxhome.de/downloads/inhalt.htm", "/", -1)
    For i = 0 To UBound(linkarr)
        Debug.Print linkarr(i)
    Next i
    'und zusammenbauen
    tmpStr = linkarr(0) & "/"
    For i = 1 To UBound(linkarr) - stepUp
        tmpStr = tmpStr & "/" & linkarr(i)
    Next i
    MsgBox tmpStr
End Sub


Gruss Rainer
Anzeige
AW: Eine Programmiertechnische Herausforderung
30.03.2006 10:06:56
Erich
Hallo Martin,
versuchs mal damit:
Function MakeAbsoluteLink$(ByVal bas$, ByVal rel$)
Dim ii%, jj%, dom$
ii = InStr(bas, "//")
jj = InStrRev(bas, "/")
If jj > ii + 1 Then bas = Left(bas, jj - 1)        ' bas ab letztem "/" abschneiden
jj = InStr(ii + 2, bas, "/")
If jj > 0 Then                                     ' bas in dom und bas aufteilen
dom = Left(bas, jj - 1)
bas = Mid(bas, jj + 1)
Else
dom = bas
bas = ""
End If
' bas und rel verarbeiten
Do
If Left(rel, 1) = "/" Then          ' root
MakeAbsoluteLink = dom & rel
Exit Function
ElseIf Left(rel, 3) = "../" Then    ' nach oben
rel = Mid(rel, 4)
ii = InStrRev(bas, "/")
If ii > 0 Then
bas = Left(bas, ii - 1)
ElseIf Len(bas) > 0 Then
bas = ""
Else
MakeAbsoluteLink = "<ungültiger Link>"
Exit Function
End If
ElseIf Left(rel, 2) = "./" Then     ' bas bleibt unverändert
rel = Mid(rel, 3)
Else
MakeAbsoluteLink = dom & "/" & bas & IIf(bas = "", "", "/") & rel
Exit Function
End If
Loop
End Function

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
TOLL:!
30.03.2006 15:39:18
Martin
Werd's gleich testen und Rückmeldung erstatten!!!
VTHANX
Marten
geschlossen bis zur Rückmeldung *g o.w.T.
30.03.2006 22:52:49
Reinhard

Gruß Reinhard ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige