[Delphi] Hanger bij te snel vullen TStrings object?

Pagina: 1
Acties:

  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TtheMainForm.ParseHTML(theHTML,theInfo:TStrings);
var theString:string;
    i,startTag,stopTag:integer;
    Continue: Boolean;
begin
  for i := 0 to theHTML.Count-1 do
  begin
    theString := theHTML.Strings[i];
    Continue := True;
    //1: Delete everything between < and >
    //procedure Delete(var S: string; Index, Count:Integer);
    //function Pos(Substr: string; S: string): Integer;
    while Continue do
    begin
      startTag:=Pos('<',theString);
      stopTag:=Pos('>',theString);
      if startTag=0 then Continue := false else Delete(theString,startTag,(stopTag+1-startTag));
    end;
    theInfo.Add(theString);
  end;
end;

Korte uitleg: Deze procedure gaat dus een HTML file omzetten naar text only. Dit is om gegevens uit een HTML file te halen die voor mij van belang zijn. Alle HTML code doet er niet toe dus wordt gewoon verwijderd.
Probleem: Bij de 8e iteratie (van 92 regels invoer) "hangt" het programma. Als ik rustig door het programma heen step (F8) hangt het programma niet. Laat ik hem draaien kom ik er via het watches window achter dat ie daar hangen gaat. Ik heb er echter geen idee van waarom.
Wellicht van belang: Beide TStrings in de invoer van de functie zijn de "Lines" van een TMemoveld op het main form.


[Edit] :o Domme ik. Hield er geen rekening mee dat er ook <!-- op een enkele regel staan kon zonder een sluittag :/

Deze kan dicht ;)

[ Voor 8% gewijzigd door Aetje op 15-11-2003 20:55 ]

Forget your fears...
...and want to know more...


Verwijderd

En wat dacht je van '<' in een script?

vb.
document.writeln('<b>bla');

of

if (a < b) then

[ Voor 78% gewijzigd door Verwijderd op 15-11-2003 23:48 . Reden: voorbeelden toegevoegd ]


  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

Topicstarter
ik heb er "if (starttag=0)OR(stoptag=0) then" van gemaakt. Werkt net zo goed :)

Forget your fears...
...and want to know more...


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Je kan je zoek&vervang mechanismje misschien beter voor de hele tekst in één keer gebruiken, ipv regel voor regel. Dus met TMemo.Text of TStrings.Text.

Misschien is het ook een idee om het met regular expressions te doen. die zijn wat dat betreft betrouwbaarder te maken.

日本!🎌


  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

Topicstarter
_Thanatos_ schreef op 16 november 2003 @ 13:26:
Je kan je zoek&vervang mechanismje misschien beter voor de hele tekst in één keer gebruiken, ipv regel voor regel. Dus met TMemo.Text of TStrings.Text.

Misschien is het ook een idee om het met regular expressions te doen. die zijn wat dat betreft betrouwbaarder te maken.
Nee dat kan niet, omdat die regels later nog verder bewerkt gaan worden. Ennuh... Regular expressions, voorbeeldje?

Forget your fears...
...and want to know more...


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Er zijn verschillende regular expression libraries voor Delphi te vinden:
[google=regular expressions delphi]

En een regular expression die een geldige HTML-tag opzoekt is gauw gemaakt, anders zijn ze ook best te vinden bij www.regular-expressions.info

日本!🎌

Pagina: 1