unter http://www.delphiforum.de habe ich einen Fertigen HTML Paser gefunden den ich gerne für meine zweck nutzen bzw. ausprobieren möchte. Dort sind zwei weitere units dabei:
FastStringFuncs und FastStrings
Die kann Lazarus nicht Komplieren. weil es ASM noch nicht gibt anscheind spiele ich mir den
FastStrings.pas(276,3) Fatal: Selected assembler reader not supported
Die Meldung kommt immer,
Einstellungen rum komme ich ein stück weiter:
(wenn ich Den Delphi Mouds einschalte kommt diese Meldung)
FastStrings.pas(292,26) Error: Invalid operand type
Da ich kein ASM kann:
mov AL, [ESI]
lea ESI, ESI + 1 // hier kommt die Meldung
mov [EDI + EAX * 4], ECX
dec ECX
jg @@loop
pop ESI
pop EDI
Der Code ist noch um einiges Länder. Ich weiß nicht ob ich die units einfach hier hochladen darf... Wenn keiner was dagegen hat kann ich es ja machen....
Weil für mein Vorhaben währe diese HTMlPaser units nicht schlecht. oder kennt ihr noch vergleichbare units die es schon in Lazarus Gibt ?
Mir geht es darum Optimal HTML code zu Pasen.
das mache ich im Moment so:
Code: Alles auswählen
function NextHtml(var FirstIndex, LastIndex: Integer;
var aCommand:widestring; const asoruce: widestring): String;
begin
lastindex:=PosExt('<',asoruce,FirstIndex);
// writeln(Firstindex,'\',Length(asoruce));
if LastIndex > 0 then begin
result:=Copy(asoruce,FirstIndex,abs(LastIndex-FirstIndex)-1);
FirstIndex:=PosExt('>',asoruce,LastIndex);
aCommand:=Copy(asoruce,LastIndex,abs(LastIndex-(FirstIndex-1)));
end
else begin
aCommand:='';
result:=Copy(asoruce,FirstIndex,Length(asoruce));
end;
end; // NextHtml
l:=1; p:=1; pw:=0; ph:=ph+2;
repeat
str1:=NextHtml(l,p,str2,aText2);
until p = 0;
Ich hoffe euch ist mein Prinzip klar. Meiner Meinung nach ist das besser als meine anderen versuche wie z.b. das jeder Buchstabe ein Objeckt ist...
Diese Daten lese ich im Moment in eine Strucktur ein:
Jeder Zeile besteht aus Blöcken jeder Block kann leicht Formatiert werden.
mit folgenden Zeilen z.b.
die " sind wichtig.... das abschließende /fg auch damit wird gezielt die vorherige Farbe wiederhergestellt.
Dank der Liste kann ich leicht scrollen: Ich habe ein Buffer von typ TBitmap der ist so groß wie der Anzeige Bildschrim und jetzt verwende ich zum erstenmal selber zwei Scrollbars
eine Für Vertikal eine für Horizontal. Das Scrollen Klappt Prima: bei Vertikal greife ich auf die interne Liste zurück und zeichne nur so viel wie ich auch sehe.
Bei Horizontal nehme ich die Breite des Buffers der wird in der Breite angepasst.
Dort verschiebe ich ein TRECT....
Der Vorteil ist das es jetzt nicht mehr Flimmert wenn der Scrollbalken mit der Maus Verschoben wird.
Entwerder ich mache mein Vorhaben so weitere in dieser Form aber mir währe es lieber wenn ich hier was Fertiges nehmen könnte. Das währe dann sichere und evlt. auch einfacher.
Ich hoffe ihr habt mein Ziel verstanden. Das ist im Moment nur ein Prototyp mit dem Ziel meine Möglichkeiten zu erkunden die ich habe.