![]() |
AW: Memo - zeigt nur 2 Lines statt 12 Lines an...
Man könnte grundsätzlich gleich in der procedure xxxx.Create folgende Zeile aufnehmen:
for i := 0 to 999 do Memo1.Lines.Add(''); Dann funktioniert der Code in #1 problemlos. Alternative: Man hängt an jedes String-Ende #13#10 an, dann geht es auch:
Delphi-Quellcode:
procedure TForm2.Button6Click(Sender: TObject);
var i : Integer; begin Memo1.Clear; for i := 0 to 1002 do Memo1.lines.strings[i] := INTTOSTR(i)+#13#10; end; |
AW: Memo - zeigt nur 2 Lines statt 12 Lines an...
Zitat:
Bei TStringList wird ein EStringListError "Listenindex überschreitet das Maximum (%d)" ausgelöst. Beim TMemoStrings (das im TMemo.Lines) wurde einfach die Fehlerprüfung vergessen, bzw. man hat vergessen die Exception einzubauen und verwirft den Fehler ganz böswillig.
Delphi-Quellcode:
function TMemoStrings.Get(Index: Integer): string;
var Text: array[0..4095] of Char; begin Word((@Text)^) := Length(Text); SetString(Result, Text, SendMessage(Memo.Handle, EM_GETLINE, Index, Longint(@Text))); end; ![]()
Delphi-Quellcode:
procedure TMemoStrings.Put(Index: Integer; const S: string);
var SelStart: Integer; begin SelStart := SendMessage(Memo.Handle, EM_LINEINDEX, Index, 0); if SelStart >= 0 then begin SendMessage(Memo.Handle, EM_SETSEL, SelStart, SelStart + SendMessage(Memo.Handle, EM_LINELENGTH, SelStart, 0)); SendTextMessage(Memo.Handle, EM_REPLACESEL, 0, S); end {else raise exception .... wurde vergessen} end; ![]() Bei praktisch jedem einzelnen SendMessage/SendTextMessage wurde vergessen das Result zu prüfen. :wall: (außer bei dem einen SendMessage(LINEINDEX)) Es kann natürlich auch sein, daß man es auch bei anderen Komponenten vergessen oder wieder ausgebaut hat. :stupid: Hab nicht nachgesehn, aber ich hoffe die machen nicht beim FMX mit diesem Mist so weiter. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz