2009-09-02 15 views
5

Ich habe den Grund gesucht, warum die maximale Länge der Zeichenfolge in einem TMemo.Lines 1024 ist, aber noch nicht gefunden.Maximale Länge der Zeichenfolge in Delphi-Eigenschaft Zeilen von TMemo

Ich habe eine Textdatei, die Begrenzte/CSV-Daten enthält, deren Länge etwa 2000 Zeichen beträgt. Ich verwende ein Memo, um eine Vorschau anzuzeigen, bevor ich die Datei bearbeite.

memo.Lines.LoadFromFile (Textdatei);

Ich habe den WordWrap auf FALSE und scrollBar auf ssHorizontal festgelegt. Daher wird kein Datensatz in die nächste Zeile eingeschlossen.

Aber wenn ich die memo.Lines iteriere, fand ich, dass der maximale String in jedem Index 1KB oder 1024 Zeichen hält. Der Rest wird auf die nächste Zeile gekürzt.

Aber wenn ich TStringList verwenden, um die Datei zu laden, wird die Zeile nicht auf den nächsten Index abgeschnitten, wenn sie mehr als 1024 Zeichen erreicht. Dies passiert nicht, wenn ich TRichEdit verwende.

  1. Kann jeder dieses Phänomen erklären?
  2. Ist es das Standardverhalten von TMemo?

Ich benutze D2006, um dies zu versuchen.

Antwort

1

WishKnew versuchen, diese Links

https://forums.embarcadero.com/thread.jspa?threadID=14035

http://www.borlandtalk.com/line-length-in-tmemo-vt67596.html

http://groups.google.com/group/borland.public.delphi.vcl.components.using/browse_thread/thread/318fe3240d2860ba

Wie der große Peter Unter sagt:

... Das hat nichts mit dem zu tun hat, Begrenzung der Zeilenlänge Diese Grenze ist wirklich nur visuell, verursacht durch die Art, wie die Steuerung ihren Text rendert.

Tschüss.

+9

-1 für nur Links ohne Erklärung oder Zusammenfassung. –

+0

Die tatsächliche Antwort finden Sie hier: http://support.microsoft.com/kb/74225 –

1

Es gibt eine TeamB Antwort auf diesen Thread: https://forums.embarcadero.com/thread.jspa?threadID=14035

Ich bin überrascht, dass TStringList nicht für Sie arbeiten. Ich bin mir nicht ganz sicher, was Sie mit

der Zeile wird auf den nächsten Index nicht abgeschnitten, wenn es mehr als 1024 Zeichen erreicht.

Ich nehme an, dass die Zeilen durch Zeilenumbrüche oder CRLFs begrenzt sind. Warum ist es wichtig, ob eine CSV-Zeile 1024 Zeichen überschreitet? Bitte posten Sie weitere Details.

+0

Ich verwende TMemo, um eine Vorschau der Datei anzuzeigen, bevor ich sie verarbeite. Denken Sie daran, wenn wir versuchen, eine Textdatei mit Excel zu öffnen? Es gibt einen Assistenten, der den Inhalt der Datei in der Vorschau anzeigt und uns hilft, die Zeilen usw. zu teilen. Ich habe kein Problem mit TStringList noch mit TRichEdit. Das Problem tritt nur auf, wenn ich TMemo verwende.Von dem Link, den Sie und RRUZ oben erwähnt haben, hat TRichEdit auch die ähnliche Begrenzung, aber es hält 4096 in max. – WishKnew

+1

Das macht Sinn. Eine Option wäre, sie mit einer TStringList zu laden und dann die ersten n Zeichen in einem TMemo anzuzeigen (vorausgesetzt, der Benutzer muss nur das Trennzeichen auswählen). Eine weitere Möglichkeit besteht darin, erneut über TStringList zu laden, aber die nicht analysierten Ergebnisse in einem Gitter anzuzeigen. Ich weiß nicht, ob diese Kontrolle eine Einschränkung hat. Sie können ein TRichEdit verwenden oder nach einem benutzerdefinierten Steuerelement suchen, das diese Einschränkung nicht aufweist. Vor Jahren hatte ich ein Delphi-Steuerelement von Drittanbietern, das wie der Excel-Importassistent funktionierte, aber ich erinnere mich nicht an den Namen. – TrueWill