Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   StringReplace-Funktion etwas aufbohren (https://www.delphipraxis.net/211076-stringreplace-funktion-etwas-aufbohren.html)

DieDolly 25. Jul 2022 10:41

AW: StringReplace-Funktion etwas aufbohren
 
Kannst du mir da auf die Sprünge helfen?
Wenn ich mir Punkte für RegEx geben müsste, hätte ich 0 von 10.

Bei Regex101.com: abcd <img ganzvielblödsinnabcdefghistehthier > efghi

Delphi.Narium 25. Jul 2022 11:02

AW: StringReplace-Funktion etwas aufbohren
 
Anderer Vorschlag:

HTML in 'ne MemoryStream laden und zeichenweise in einen zweiten MemoryStream schreiben.
Vor jedem < einen Zeilenumbruch schreiben.
Hinter jedem > einen Zeilenumbruch schreiben.
Alle übrigen Zeilenumbrüche durch ein Leerzeichen ersetzen.

Zweiten MemoryStream in 'ne Stringliste laden.

Diese Stringliste enthält nun nur noch Zeilen, die entweder ein HTML-Tag enthalten oder nur aus reinem Text bestehen.

StringReplace nur in den Zeilen aus reinem Text ausführen.

DieDolly 25. Jul 2022 11:29

AW: StringReplace-Funktion etwas aufbohren
 
Wie füge ich denn beides wieder zusammen? Ich brauche am Ende alles zusammen quasi im Originalzustand.

himitsu 25. Jul 2022 11:30

AW: StringReplace-Funktion etwas aufbohren
 
Leerzeichen und Zeilenumbrüche stellen im HTML keine Veränderung dar.

DieDolly 25. Jul 2022 11:33

AW: StringReplace-Funktion etwas aufbohren
 
Dann verstehe ich den Ansatz oben nicht und was mir diese zweite StringList bringen soll.

Zitat:

StringReplace nur in den Zeilen aus reinem Text ausführen.
Das geht alleine schon wegen den base64-enkodierten Bildern nicht.

Weil wenn ich das StringReplace auf die StringList ausführe bringt mir das nichts. Ich muss das StringReplace direkt auf den HTML-Content des HtmlViewers ausführen.

KodeZwerg 25. Jul 2022 11:38

AW: StringReplace-Funktion etwas aufbohren
 
aber im HTML ist doch ein bild per
Delphi-Quellcode:
<img src="data:image/png;base64,...../>
in einem TAG und wird somit nicht berührt?!

DieDolly 25. Jul 2022 11:44

AW: StringReplace-Funktion etwas aufbohren
 
Ich denke das klappt alles nicht. Das zeichenweise Durchgehen könnte sehr lange dauern, weil diese Prozedur auch 3x oder 4x die Sekunde aufgerufen werden kann.

KodeZwerg 25. Jul 2022 11:50

AW: StringReplace-Funktion etwas aufbohren
 
Vielleicht so: (da hier jede menge Informationen zwecks Ablauf fehlen)
Einen Hashwert der HTML erzeugen und mit vorhandenem Hash abgleichen, wenn ungleich eine neue in-memory Datei wie von Delphi.Narium beschrieben erzeugen und anwenden, wenn gleich dann mache nichts.

DieDolly 25. Jul 2022 11:56

AW: StringReplace-Funktion etwas aufbohren
 
Ich durchsuche das Htmlviewer-Element (den HTML-Datei) live beim Eintippen in ein Eingabefeld.
Die Eingabe wird, wenn gefunden, markiert. Werden nun aber Vorkommen markiet die sich innerhalb eines HTML-Tags befinden, wird das Dokument zerstört.

himitsu 25. Jul 2022 12:21

AW: StringReplace-Funktion etwas aufbohren
 
Ja, es wird zwar von RegEx bei HTML abgeraten, aber das liegt vorwiegend an der Verschachtelung von HTML-Tags und daß diese auch noch "defekt" sein dürfen können.
IMG hat aber keine untergeordnete TAGs und selbst bei Strict-HTML kann man das eventuelle schließende </img> ignorieren.

Problematisch würde es nur, wenn zwischen <img und src= noch weitere Attribute vorkämen, aber wenn man das ausschließen kann, dann stört sowas ja nicht. :angle2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz