Italia
Foro

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

 

Richi
Ciao,
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 per die Aiuto


13 kB
Kurzbeschreibung: Ausgabe
Hochgeladen:15.11.2013
Downloadcounter0
Download
 
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

Wai
 
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 naturalmente 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 per deine Aiuto
 
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 un Liste schreiben. Die kannst du dann abarbeiten und deinen Text (ich würde alles in un 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 naturalmente 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 un 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 per deine Aiuto


 
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

W
ut
 
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 (Aiuto) geht,
wird es noch interessanter.

PS: Hatte auch mal vor einigen Monaten sowas
per 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
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  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

6.278 Views

Untitledvor 0 min.
H.Brill14.06.2023
Sven Bader24.05.2023
RudiB.02.09.2022
Jörg Sellmeyer15.05.2018
Di più...

Themeninformationen

Dieses Thema hat 3 subscriber:

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


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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