Das Thema hat sich jetzt zwar erledigt, für einen Neuling möchte ich allerdings noch etwas anmerken:
Code:
While Eof(#loadfilenum) = 0
x$ = x$ + Chr(ReadCharacter(#loadfilenum, flagg))
; x$ = x$ + ReadString(#loadfilenum, flagg)
Wend
Wenn du nun eine 100kb Datei hast, sind das "rund" 100 000 Bytes.
nutzt man
Code:
x$ = x$ + Chr(ReadCharacter(#loadfilenum, flagg))
wird nun ein character, also EIN oder ZWEI Bytes auf einmal eingelesen.
Das bedeutet auch, die Schleife läuft 50 000 mal oder 100 000 mal durch. Und immer wird nur ein Byte oder zwei gelesen!!
nutzt man
Code:
x$ = x$ + ReadString(#loadfilenum, flagg)
Wir im korrekten Falle (Flag siehe oben) die ganze Datei auf eimal geladen. Wenn ich mich nicht irre, wird geladen bis ein EOL kommt, was wohl ein Nullbyte ist oder eventuell UTF oder so kann es auch was anderes sein. ich errinnere mich da nicht.
1. Wird hier auf jeden FAll in EINEM BLOCK gelesen (es sei den, was hier so scheint ein EOL in der Mitte steht) und das geht natürlich schneller. bei SSD merkt man es etwas weniger als bei normalen HDDs. bemerkbar ist es dennoch.
2. wird bei readchar jedes byte ausgelesen und gespeichert (außer nullbytes vermutlich). bei readstring allerdings nicht, falls eol im text sind. und diese werde dann auch nicht mehr im string gespeichert, da es "steuerzeichen" für PB sind (vereinfacht gesagt). es wird also nicht eins zu eins kopiert.
Was mir jetzt in den Sinn kommt ist allerdings, weshalb sind in der das EOLs drinn!? Das weißt doch auf einen FEHLER hin.
Entweder in der Datei, oder was ich eher vermute in deinem Code. Vermutlich nutzt dein kompeliertes PRogramm einen anderen Zeichensatz als die Datei!
Ich würde das noch mal überprüfen, alten Code nehmen der nicht ging und mal raus finden woran es lag.
Ach ja, und wie schon jemand gebeten hat. Passe den Titel deine ersten Beitrages mal an. einfach im Beitrag auf "ändern" klicken.
So was wie "[erledigt]readstring / readchar HTML und RTF auslesen. Problem."