Deutsch
Forum

Eigentlich einfach, nur wo ist mein Denkfehler (@MemPos) ???

 

Richi
Hallo,
ich möchte einen Text mit @MemPos mehrfach durchsuchen. Nur bei der Positionierung, der zweiten Abfrage scheine ich einen Denkfehler zu haben ?
KompilierenMarkierenSeparieren
Declare Dateigröße%,Put$,Daten#
Put$ = "C:\Geladene-Seite.txt"
lesen:
Dateigröße% = @FileSize(Put$)
Print "Dateigröße% = ";Dateigröße%;" Bytes"
Dim Daten#,Dateigröße%+100
ReadText Daten#,Put$
'---------------------test-------------------------
declare pos1%,pos2%,start%,anzahl%,pos3%,pos4%
start% = 0
pos1% = @MemPos(Daten#,start%,"<")' Suche von von Position 0
pos2% = @MemPos(Daten#,start%,">")' Suche von von Position 0
anzahl% = pos2% - pos1%' Berechne die Zeichen zwischen den Fundstellen
print "von:";pos1%;" bis ";pos2%;" Zeichen gefunden: "; @Char$(Daten#,pos1%, anzahl%+1)' Ausgabe der gefundenen Zeichen OK
start% = pos2%+1' Zeiger an die letzten Fund-Position +1
print "start%=";start%
' ------------------------- AB HIER ???
pos3% = @MemPos(Daten#,start%,"<")' ERWARTE SUCHE VON POSITION 9  = start% ???????????????
pos4% = @MemPos(Daten#,start%,">")' ERWARTE SUCHE VON POSITION 9  = start% ???????????????
anzahl% = pos4% - pos3%' Berechne die Zeichen zwischen den Fundstellen
print "von:";pos3%;" bis ";pos4%;" Zeichen gefunden: "; @Char$(Daten#,pos3%, anzahl%+1)' Ausgabe der gefundenen Zeichen / Erwartet wäre:'<befehl1>' ???
Print "Waitkey"
waitkey
Dispose Daten#
end

Meine Geladene-Seite.txt:
KompilierenMarkierenSeparieren
Ausgabe: Bild im Anhang bzw siehe unten

Ich würde erwarten das die Ausgabe mir folgendes ausgibt:

<body>
<befehl1>

Wo ist mein Denkfehler oder unterliege ich einen Bug ??? Ich bastle da schon zwei Tage herum.

Danke für die Hilfe


13 kB
Kurzbeschreibung: Ausgabe
Hochgeladen:15.11.2013
Ladeanzahl0
Herunterladen
 
15.11.2013  
 




Jörg
Sellmeyer
posx% ist ja kein absoluter Wert, sondern MemPos zählt ab der neuen Startposition die Bytes bis zur nächsten Fundstelle - hier also 2.

So funktioniert es:
@Char$(Daten#,start% + pos3%, anzahl%+1)
Du musst also die Position/start% immer "mitführen".
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
15.11.2013  
 




Jörg
Sellmeyer
Ach so - ich weiß nicht genau, was du erreichen willst, aber ich würde es so machen:
KompilierenMarkierenSeparieren
Var s$ = "<body>\n<befehl1>\n<befehl2>HELLO WORLD\n<befehl3>\n<befehl4><befehl5>\n</body>"
Declare Array$[]
Array$[] = Explode(s$,"<")

WhileLoop 0,SizeOf(Array$[])-1

    Case SubStr$(Array$[&Loop],1,">") > "":Print SubStr$(Array$[&Loop],1,">")

Wend

WaitInput
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
15.11.2013  
 




Richi
Hallo Jörg,

ich möchte so was wie in PHP die String-Funktion strip_tags machen, wo alle HTML Befehle entfernt werden.
Da ich nicht alle HTML Befehle angeben möchte usw würde ich einfach alles zwischen < und > aus dem Text entfernen.

2. Nun hätte ich wahrscheinlich auch Sachen wie href Links im Text stehen die sollte ich natürlich zu vor heraus suchen können

Ich habe jetzt meine Routine so verknotet das ich nicht mehr durchblicke Ich fange glaub noch mal morgen neu an

Für Ideen und Anregungen Danke auch für deine Hilfe
 
15.11.2013  
 




H.Brill
Vielleicht helfen da auch die regulären Ausdrücke,
etwa so :
Match$("<[a-zA-Z]{1,?}>", String$(bereich#, 0))

Mußte mal ausprobieren.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
15.11.2013  
 




Jörg
Sellmeyer
Richi (15.11.13)

ich möchte so was wie in PHP die String-Funktion strip_tags machen, wo alle HTML Befehle entfernt werden.
Da ich nicht alle HTML Befehle angeben möchte usw würde ich einfach alles zwischen < und > aus dem Text entfernen.


Eigentlich könntest du dann mit meiner Methode alles in eine Liste schreiben. Die kannst du dann abarbeiten und deinen Text (ich würde alles in eine Stringvariable einlesen) mut Translate$() bearbeiten.

Richi (15.11.13)

2. Nun hätte ich wahrscheinlich auch Sachen wie href Links im Text stehen die sollte ich natürlich zu vor heraus suchen können


Ich kenn mich da nicht so aus - stehen href-Links auch in spitzen Klammern (<href> </href>)? Je nachdem, ob du die zugehörigen Links behalten willst, kannst du dann Vorher den Code auf die gleiche Weise auf href und /href parsen und die Links per SubStr$() in eine Liste einlesen.

Richi (15.11.13)

Ich habe jetzt meine Routine so verknotet das ich nicht mehr durchblicke Ich fange glaub noch mal morgen neu an


Das kenn ich

Richi (15.11.13)

Für Ideen und Anregungen Danke auch für deine Hilfe


 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
15.11.2013  
 




Jörg
Sellmeyer
Mit RegExp geht es auch ganz einfach:
KompilierenMarkierenSeparieren
Var s$ = "<body>\n<befehl1>\n<befehl2>HELLO WORLD\n<befehl3>\n<befehl4><befehl5>\n</body>\n"
Var a$ = s$
Cls
Match$("<(.*?)>",a$)

While %matchpos > 0

    Print Match$("<(.*?)>",a$)
    a$ = Del$(a$,1,%matchpos)

Wend

WaitInput
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
16.11.2013  
 




H.Brill
Hallo Jörg, genau das meinte ich.
RegExp würde ich vorziehen, weil man da schon
die Systemvariablen $Match, &MatchPo, %MatchLen
immer zur Hand hat.
Ist auch eine feine Sache in Verbindung mit
@Translate$() und Instr(). Wenn man dann
noch auf Rolands verlinkte Seite (Hilfe) geht,
wird es noch interessanter.

PS: Hatte auch mal vor einigen Monaten sowas
für Tags gebraucht :
KompilierenMarkierenSeparieren
Declare String s
Declare String s1
Set("RegEx", 1)
Cls
s = "<img alt="
s1 = "<img 09abc8f="
Print Translate$(s, "<img [A-Za-z0-9]{1,}", "")
Print Translate$(s1, "<img [A-Za-z0-9]{1,}", "<***")
Waitkey
End
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
16.11.2013  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.232 Betrachtungen

Unbenanntvor 0 min.
H.Brill14.06.2023
Sven Bader24.05.2023
RudiB.02.09.2022
Jörg Sellmeyer15.05.2018
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Jörg Sellmeyer (4x)
H.Brill (2x)
Richi (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie