Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
19. Dez 2009
Mathe 5, würd ich mal sagen :roll:
nja, immerhin ist der Code jetzt kürzer
// If Progress is -3, then starting to read the file or stream.
// If Progress is -2, then starting to decode. (only in Delphi 2009 and successors)
// If Progress is -1, then started to empty the old list.
// If Progress is 0, then starting the Add.
// If Progress is between 0 and 10000, then the text will be...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
19. Dez 2009
OK, da ist der Integer wohl etwas zu klein :lol:
ersetze mal diese Zeilen (3 mal)
If Assigned(FProgress) Then FProgress(Self, Length(Value)
* 9999 div Integer(P - Integer(Value)));
durch diese
If Assigned(FProgress) Then FProgress(Self, Int64(Length(Value))
* 9999 div ((Integer(P) - Integer(Value)) div SizeOf(Char)));
wobei es so auch gehn sollte
If Assigned(FProgress) Then...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
19. Dez 2009
Application.ProcessMessages verarbeitet die Windowsbotschaften, also es sorgt für das "früher wieder befehle entgegennimmt" und ist auch dafür gedacht, daß sich das Label und die ProgressBar neu zeichnen.
Und daß es "etwas" länger dauert ist auch klar, immerhin werden jetzt nach jeder Zeile der Datei
ein Label, die ProgressBar und alle möglichen Windwsbotschaften verarbeitet ... welches ja...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
19. Dez 2009
Ups ... ja, da ist ein kleiner Fehler drinnen.
TStrings.LoadFromStream muß natürlich TProgressStrings.LoadFromStream heißen und im OnProgress ist auch ein Copy&Paste-Fehler :oops:
für das TStringList kann man auch einen anderen Nachfolger von TStrings einsetzen ... jenachdem, was man benötigt.
Das hier dürfte jetzt wohl mindestens ab Delphi 7 laufen (hoff ich mal)
// If Progress is...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
19. Dez 2009
Tut mir Leid, aber diese Streamdekoratoren bringen nicht wirklich, denn eine StringList ließt erstmal den gesamten Stream oder die Datei ein, seit D2009 wird der dann im Ganzen decodiert (TEncoding) und danach als Ganzes an SetTextStr aka .Text übergeben ... das Einlesen ist also nur ein Bruchteil dessen, was da passiert.
Also bringt es nicht viel, da was NUR am Stream machen zu wollen.
...