Det var lige hvad jeg kunne ryste ud af ærmet - har ikke testet det.
function TForm1.InTag(const aIndex : integer) : boolean; var st : string; i : integer; bStart, bEnd : boolean; begin st := mHTML.Lines.Text; i := aIndex; bStart := false; bEnd := false;
// Seek back - look for ending tag while (i > 1) and (st[i] <> '>') and not bStart do begin bStart := st[i] = '<'; inc(i); end;
if bStart then begin i := aIndex; while (i < length(st)) and not (st[i] in ['<','>']) and not bEnd do begin bEnd := st[i] = '>'; inc(i); end; end;
Flyeknepperi, men det kan blive lidt pænere - stadig ikke testet.
function TForm1.InTag(const aString : string; const aIndex : integer) : boolean; var i : integer; bStart, bEnd : boolean; begin bStart := false; bEnd := false;
// Seek backards - look for start-tag i := aIndex; while (i > 1) and (aSt[i] <> '>') and not bStart do begin bStart := aSt[i] = '<'; dec(i); end;
// Seek forward if tag-start found - look for end-tag if bStart then begin i := aIndex; while (i < length(aSt)) and not (aSt[i] in ['<','>']) and not bEnd do begin bEnd := aSt[i] = '>'; inc(i); end; end;
Jeg er med på en lytter, og tillader mig at kommentere:
Men det er vel egenlig en form for parser vi bevæger os over i, og det er jo lettere sagt end gjort. Lad os antage at man nu som de fleste efterhånden også skriver et server-sidesprog i sin html kode, såsom asp og php. Begge bruger < og >-tegnet for at bestemme at deres script starter og begynder. Det skal denne jo også gerne tage højde for. Og for at gøre tingene meget værre, så mener jeg vist også at en kode som fx onclick="if (value > 1){alert('');}" er ganske lovlig HTML, men ved vores parser det?
Hvis det lykkedes at lave en parser der kan tage højde for alt dette så vil jeg gerne stå højt på listen til at få source-koden til den :p
Er du stadig interesseret i at få dette spg. besvaret? Har været væk fra den ret længe og vil lige høre om jeg skulle bruge tid på det - har efterhånden forstået spørgsmålet, men mangler lige lidt på den korrekte løsning.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.