2009-09-02 8 views
5

Ho cercato il motivo per cui la lunghezza massima di String in un TMemo.Lines è 1024, ma non è stata ancora trovata.Lunghezza massima di stringa nella proprietà Delphi Righe di TMemo

Ho un file di testo che contiene dati delimitati/csv la cui lunghezza è di circa 2000 caratteri. Uso un promemoria per visualizzarlo in anteprima prima di elaborare il file.

memo.Lines.LoadFromFile (textFile);

Ho impostato WordWrap su FALSE e scorrimento su ss orizzontale. Quindi qualsiasi record non verrà incapsulato nella riga successiva.

Ma quando eseguo l'iterazione dei memo.Lines, ho trovato che la massima tenuta di stringa in ogni indice è 1KB o 1024 caratteri. Il resto viene troncato alla riga successiva.

Ma se utilizzo TStringList per caricare il file, la riga non viene troncata all'indice successivo quando raggiunge più di 1024 caratteri. Questo non succede quando uso TRichEdit.

  1. Chiunque può spiegare questo fenomeno?
  2. È il comportamento predefinito di TMemo?

Io uso D2006 per provare questo.

risposta

1

WishKnew provare questo link

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

Come il grande Peter basso dice:

... Questo non ha nulla a che fare con la volte il limite della lunghezza della linea. Questo limite è davvero solo visivo, causato da il modo in cui il controllo esegue il rendering del testo.

Ciao.

+9

-1 per solo pubblicare link senza spiegazione o sommario. –

+0

La risposta effettiva può essere trovata qui: http://support.microsoft.com/kb/74225 –

1

C'è una risposta TeamB su questo thread: https://forums.embarcadero.com/thread.jspa?threadID=14035

Sono sorpreso che TStringList non ha funzionato per voi. Io non sono molto sicuro di cosa si intende per

la riga non viene troncato al successivo indice quando raggiunge più di 1024 caratteri.

Suppongo che le linee siano delimitate da nuove righe o CRLF. Perché dovrebbe importare se una linea CSV supera i 1024 caratteri? Si prega di inviare ulteriori dettagli.

+0

Uso TMemo per visualizzare l'anteprima del file prima di elaborarlo. Ricordi quando proviamo ad aprire un file di testo usando Excel? C'è una procedura guidata che visualizza in anteprima il contenuto del file e ci guida come dividere le righe, ecc.? Non ho alcun problema con TStringList né con TRichEdit. Il problema si verifica solo quando utilizzo TMemo.Dal link tu e RRUZ menzionati sopra, TRichEdit ha anche la limitazione simile, ma contiene 4096 in max. – WishKnew

+1

Questo ha senso. Un'opzione potrebbe essere caricarla con una TStringList, quindi visualizzare i primi n caratteri in un TMemo (supponendo che l'utente debba solo selezionare il delimitatore). Un'altra possibilità è di nuovo caricare tramite TStringList, ma visualizzare i risultati non analizzati in una griglia. Non so se quel controllo ha una limitazione. È possibile utilizzare un TRichEdit o cercare un controllo personalizzato che non abbia questa limitazione. Anni fa avevo un controllo Delphi di terze parti che funzionava come il wizard di importazione Excel, ma non ricordo il nome. – TrueWill