Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi html-Kommentare als ComboBox Items (https://www.delphipraxis.net/140473-html-kommentare-als-combobox-items.html)

samarek 18. Sep 2009 22:51


html-Kommentare als ComboBox Items
 
Hallo zusammen,
also, nach meinem ersten Kinderkram-Post hier jetzt mal ein, wie ich finde, etwas schweres Kaliber

Ich möchte ein html Dokument nach Kommentaren durchsuchen und den Inhalt der Kommentare als Items in eine ComboBox einsetzen

Das wesentliche Problem hierbei ist das arbeiten mit Strings, die html-Kommentare sind immer als und in einzelne Zeilen geschrieben, lassen sich also schön als Stringliste einlesen und ausgeben.
Aber ich möchte natürlich nur das "blabla" in der ComboBox haben und natürlich auch nur jeweils einmal pro Kommentar-Paar, also muss ich irgendwie innerhalb der Strings arbeiten können, was ICH so erstmal nicht kann (klar dass das in Delphi geht, aber ich weiss halt nicht wie)
also will ich die ersten 4 Zeichen und die letzten 10 Zeichen wegschmeissen, dann nachschauen wo sich der verbleibende Inhalt (also das blabla) wiederholt und den String komplett aus der Stringlist löschen, so dass am Ende eine Stringlist voller blabla übrig bleibt, die ich dann zeilenweise in die Items der ComboBox einsortieren kann, das dürfte dann der leichtere Part sein.

Wär gut wenn mich da jemand mal auf die richtige Fährte bringen könnte.

Luckie 18. Sep 2009 22:53

Re: html-Kommentare als ComboBox Items
 
Stcihwörter: pos, copy.

samarek 18. Sep 2009 23:14

Re: html-Kommentare als ComboBox Items
 
Das Universum liegt wohl weiterhin in Führung ...

könnt ich die Antwort bitte etwas deutlicher bekommen???

nichtsdestotrotz, danke das war echt ne fixe Antwort

himitsu 18. Sep 2009 23:48

Re: html-Kommentare als ComboBox Items
 
Mit Pos bzw. PosEx die Markierungen "" suchen und via Copy und etwas Mathematik das Dazwischenliegende rauskopieren.

Man könnte es aber über RegEx (regular expressions) versuchen.
> http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck

Luckie 19. Sep 2009 00:59

Re: html-Kommentare als ComboBox Items
 
Schlag die Funktionen mal in der Hilfe nach.

samarek 19. Sep 2009 01:39

Re: html-Kommentare als ComboBox Items
 
hmmm ... aber wäre es denn nicht einfacher das so zu machen wie ich es oben beschrieben habe
das ganze html ding in eine Stringliste laden und die dann entsprechend zurecht stutzen?????

es gibt doch auch substrings in delphi, oder?

dass das progi halt die stringlist durchgeht in jeder zeile nach den ersten 4 zeichen guckt und wenn die '<!--' sind werden die gelöscht und die letzten 10 auch, dann wird der rest in eine stringvariable geschrieben, jede zeile gelöscht bis die ersten 4 zeichen wieder '<!--' sind, dann wieder löschen, sehen ob die ersten zeichen jetzt mit der variablen identisch sind, wenn ja die ganze zeile löschen und dann wieder von vorne
und am ende bleibt dann eine stringliste übrig mit den strings die ich haben will und die kann ich dann einfach in die combobox schreiben

ich meine, im prinzip hab ich keine ahnung, delphi ist halt nur ein hobby von mir, aber wäre das so nicht einfacher???

ich find die hilfe von Delphi2005PE schrecklich, hab schon überlegt mir wieder Delphi5 drauf zu machen weil die Hilfe da deutlich besser war

Matze 19. Sep 2009 07:54

Re: html-Kommentare als ComboBox Items
 
Hallo,

im Endeffekt machst du mit Pos bzw. PosEx und Copy nichts anderes. Du suchst nach deinen Kommentar-Zeichen und kopierst das dazwischen heraus.
Das ist weniger Aufwand als manuell mit einer Schleife nach den 4 aufeinander folgenden Zeichen zu suchen und den Rest zu entfernen. Denn Pos/PosEx suchen dir die Position eines kompletten Strings, ohne dass du das manuell machen musst.

Wenn du die ersten Positionen von "" bsp. in 2 Variablen hast, kannst du, wie himitsu schrieb, das dazwischen mit Copy heraus kopieren. Mit PosEx suchst du dann die nächsten Vorkommen von "" und kopierst das dazwischen wieder heraus. Das Ganze ist natürlich auch mit einer While-Schleife kombinierbar.

samarek 19. Sep 2009 11:43

Re: html-Kommentare als ComboBox Items
 
OK
aber irgendwie versteh ich es immer noch nicht so ganz
wie benutze ich den Pos oder PosEx jetzt um eine Stringlist nach den Strings zu durchsuchen die ich brauche
kann ich da mal bitte ein Syntaxbeispiel bekommen?

himitsu 19. Sep 2009 11:45

Re: html-Kommentare als ComboBox Items
 
StringList.Text in einen String auslesen dort bearbeiten und notfalls wieder zurückspeichern

xZise 19. Sep 2009 13:35

Re: html-Kommentare als ComboBox Items
 
Also du müsstest dir doch erstmal überlegen was du machen möchtest ;) Nagut "Kommentare raussuchen" könnte man sagen. Aber das ist ja etwas zu "unspezifisch". Stattdessen suchst du nach einem Kommentaranfang () und willst das dazwischen herausholen.
Wenn wir jetzt unser html-Dokument in einem string speichern (meinetwegen auch in einer TStringList. Aber so richtig was "bringen" tut es dir nichts).
Delphi-Quellcode:
var
  htmlcontent : string;
begin
  htmlcontent := '<html><head><titel>Willkommen!</title>' + #13#10 {ein Zeilenumbruch ;) } + '</head><body>' + #13#10 + 'Hallo Welt</body></html>';
Du kannst das wie gesagt auch in einer TStringList speichern. Als nächstes suchen wir dann nach einem Kommentaranfang mithilfe von Delphi-Referenz durchsuchenPos, bzw. Delphi-Referenz durchsuchenPosEx. Was diese Funktionen machen steht in der Hilfe. Und je nachdem wie du es letzendlich einbaust brauchst du PosEx oder kannst bei Pos bleiben.

Dann speicherst du dir wo das Kommentar beginnt (in diesem Fall das 13. Zeichen). Dann suchst du nach dem Ende des Kommentars. Das sollte dann das 45. Zeichen angeben. Jetzt musst du nur den Inhalt mithilfe von Delphi-Referenz durchsuchenCopy heraus kopieren.

Nachdem du das erste Kommentar jetzt gefunden hast bieten sich zwei Möglichkeiten an. Entweder du entfernst jetzt aus deinem String alles bis zum Kommentarende und suchst dann vom neuen. Oder du lässt erst nach dem Kommentarende anfangen zu suchen. Bei erstem brauchst du Delphi-Referenz durchsuchenDelete und beim letzeren Fall musst du dann auf Delphi-Referenz durchsuchenPosEx zurückgreifen. Ich würde zweiteres nehmen, da ich damit den String nicht verändern muss.

Auf jedenfall kannst du das dann solange machen bis Pos kein Kommentaranfang mehr findet.

MfG
xZise


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.
Seite 1 von 2  1 2      

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