![]() |
Memo - zeigt nur 2 Lines statt 12 Lines an...
Während die Listbox die 12 Items ausgibt, gibt das Memo nur die Lines 0 und 1 aus, warum?
Delphi-Quellcode:
uses DateUtils;
... ... procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i := 0 to 13 -1 do begin Memo1.lines.strings[i] := timetostr(IncSecond(now, 10+(i*8)))+' '+'Test '+ inttostr(i); Listbox1.Items[i]:= timetostr(IncSecond(now, 10+(i*8)))+' '+'Test '+ inttostr(i); end; end; |
AW: Memo - zeigt nur 2 Lines statt 12 Lines an...
Möglicherweise hat das Memo nur 2 Zeilen.
|
AW: Memo - zeigt nur 2 Lines statt 12 Lines an...
Eine "normale" TStringList und die Items der ListBox knallen (Exception), wenn man auf nicht existierende Items/Zeilen zugreift.
Beim TMemoStrings verschwindet das einfach im Nirvana. So oder so, wer auf nichtexistierende Items zugreift, der ist selber Schuld. |
AW: Memo - zeigt nur 2 Lines statt 12 Lines an...
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Siehe Bild. |
AW: Memo - zeigt nur 2 Lines statt 12 Lines an...
Zitat:
So könnte es gehen:
Delphi-Quellcode:
Memo1.Lines.Clear; // alle Zeilen löschen
for i := 0 to 13 -1 do begin // neue Zeile anhängen Memo1.lines.Add(timetostr(IncSecond(now, 10+(i*8)))+' '+'Test '+ inttostr(i)); end; |
AW: Memo - zeigt nur 2 Lines statt 12 Lines an...
Zitat:
|
AW: Memo - zeigt nur 2 Lines statt 12 Lines an...
Moin Himitsu,
Zitat:
Jetzt habe ich es mal in D7 ausprobiert: Neues Projekt. TButton TMemo TListBox auf das Formular. Den Beispielcode drauf und den Button drücken: Gleiches Verhalten, keine Exception :gruebel: aber zwei Zeilen im Memo und 12 in der Listbox. |
AW: Memo - zeigt nur 2 Lines statt 12 Lines an...
Höchstwahrscheinlich unterdrückt der Setter das und erzeugt die Objekte in der ListBox, im Memo halt nicht.
Will man etwas hinzufügen, sollte man die Add... Methoden verwenden. |
AW: Memo - zeigt nur 2 Lines statt 12 Lines an...
Zitat:
Dann müßte es wohl bei der Listbox auch besser 'Listbox1.items.add' heißen, obwohl man dort 'Items[i] nicht nur einlesen, sondern auch schreiben kann. |
AW: Memo - zeigt nur 2 Lines statt 12 Lines an...
Zitat:
|
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 23:18 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