![]() |
Anzahl Zeilen Beschänkung im Memofeld
Hallo
Der Anzahl Zeilen im Memo Feld wird immer auf 2 beschränkt. Hier folgende Test : Form1.Memo1.MaxLength:= $7F; Form1.Memo1.Lines[0] := '0'; Form1.Memo1.Lines[1] := '1'; Form1.Memo1.Lines[2] := '2'; Form1.Memo1.Lines[3] := '3'; Form1.Memo1.Lines[4] := '4'; es wird immer nur Zeile 0 und 1 geschrieben und nicht mehr, im OI habe ich auch nichts gefunden. Was mache ich falsch ? Muss man etwas in StringList setzen ? Gruss Anton |
AW: Anzahl Zeilen Beschänkung im Memofeld
Die StringListe scheint nur 2 Einträge zu haben. Mich wundert es das es nicht knallt, wenn du den 3. String setzt.
Delphi-Quellcode:
Form1.Memo1.Lines.Add( '...');
|
AW: Anzahl Zeilen Beschänkung im Memofeld
So geht's:
Delphi-Quellcode:
var i : Integer;
begin for i := 0 to 999 do Memo1.Lines.Add(''); //Memo1.MaxLength:= $7F; Memo1.Lines[0] := '0'; Memo1.Lines[1] := '1'; Memo1.Lines[2] := '2'; Memo1.Lines[3] := '3'; Memo1.Lines[4] := '4'; ... |
AW: Anzahl Zeilen Beschänkung im Memofeld
So habe ich das nicht gemeint sondern die Zeilen mit Add()/Appen() hinzufügen.
Oder:
Delphi-Quellcode:
Memo1.Lines.CommText := '0,1,2,3,4';
|
AW: Anzahl Zeilen Beschänkung im Memofeld
Nicht wundern, denn TMemoStrings wirft wirklich keine Exceptions, beim Zugriff auf nicht existierende Zeilenindize.
Beim Auslesen wird im Fehlerfall einfach ein Leerstring rausgegeben und beim Zuweisen wird, seit Jahrzehnten, das nicht gemacht, was man allen Anderen ständig einbläut => prüft gefälligst die Rückgabewerte! Da die MEMO-API aber keine Zeilen enfügt, wenn man ihnen was zuweist und sie noch nicht existieren, dann geht das natürlich ins Leere. Ich weiß jetzt allerdings nicht, wie der Affe da reagiert, da Dieses sich erstmal "nur" auf die Implementierung der WinAPI bezieht. |
AW: Anzahl Zeilen Beschänkung im Memofeld
Hallo,
vielen Dank, also liegt es doch an der StringList. Das Vorher war nur Test, die tatsächliche Anwendung von Memo läuft immer noch nicht. (Die Meldung ist ein array mit 16 bytes.) es wird nur die erste Zeile angezeigt Com3open : Form1.Memo1.Lines.Add(''); // offenbar ist das nicht richtig ?? Form1.Memo1.Lines[0] := 'COM3 open'; For i:= 0 to 15 do //SENDBYTE(Meldung[i]);//vorlaufig ausg. Form1.Memo1.Lines.Add(''); Form1.Memo1.Lines[i+3]:= IntToHex(Meldung[i],2); end; Form1.Memo1.Lines.Add(''); Form1.Memo1.Lines[20] := 'CNCStatus gesendet'; Gruss Anton |
AW: Anzahl Zeilen Beschänkung im Memofeld
Zitat:
Zitat:
Delphi-Quellcode:
Form1.Memo1.Lines.Text := 'COM3 open'; For i:= 0 to 15 do begin //SENDBYTE(Meldung[i]);//vorlaufig ausg. Form1.Memo1.Lines.Add( IntToHex(Meldung[i],2)); end; Form1.Memo1.Lines.Add('CNCStatus gesendet'); |
AW: Anzahl Zeilen Beschänkung im Memofeld
Wieso so umständlich?
Delphi-Quellcode:
Form1.Memo1.Lines.Add('COM3 open');
For i:= 0 to 15 do //SENDBYTE(Meldung[i]);//vorlaufig ausg. Form1.Memo1.Lines.Add(IntToHex(Meldung[i],2)); Form1.Memo1.Lines.Add(''); Form1.Memo1.Lines.Add('CNCStatus gesendet'); |
AW: Anzahl Zeilen Beschänkung im Memofeld
Zitat:
Delphi-Quellcode:
ist umständlich :stupid:
Begin.. END
|
AW: Anzahl Zeilen Beschänkung im Memofeld
Das bezog sich auf den Post vorher, der rote Kasten ist ja wieder im Urlaub.
|
AW: Anzahl Zeilen Beschänkung im Memofeld
Wenn man irgendwo etwas zuweisen will, dann kann man das so machen.
Delphi-Quellcode:
Durch Ableiten des TMemo kann man sich das z.B. auch als
while Memo1.Lines.Count - 1 < i do
Memo1.Lines.Add(''); Memo1.Lines[i] := S;
Delphi-Quellcode:
oder (seit D2006) via ClassHelper als
Memo1.LinesEx[i] := S;
Delphi-Quellcode:
implementieren.
Memo1.Lines.StringsEx[i] := S;
|
AW: Anzahl Zeilen Beschänkung im Memofeld
Hallo,
Besten Dank für alle die geholfen haben. Jetzt läuft es.
Delphi-Quellcode:
Gruss Anton
i:=20;
while Form1.Memo1.Lines.Count - 1 < i do Form1.Memo1.Lines.Add(''); Form1.Memo1.Lines[0]:='COM3 open'; For i:= 0 to 15 do //SENDBYTE(Meldung[i]); Form1.Memo1.Lines[i+2]:= IntToHex(Meldung[i],2); end; Form1.Memo1.Lines[19]:='CNCStatus gesendet'; DTR(0); |
AW: Anzahl Zeilen Beschänkung im Memofeld
Antwort: Warum die 2. Schleife? (Bzw. die 1.)
|
AW: Anzahl Zeilen Beschänkung im Memofeld
Ja eben, das birgt die Gefahr von Indexfehlern, die gar nicht auffallen. Man kann doch mit Add() gleich den gewünschten Text bzw. eine Leerzeile anfügen und muss das nicht nacheinander machen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 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