Newsgroup: it.comp.lang.delphi
Titolo: Perchè Memo.lines.add e StringList.Add si comportano in modo diverso?

Ciao a tutti.
Vorrei porvi una domanda, forse banale, su TStrings e TStringList.
Avendo necessità di dividere una stringa in base ad un preciso criterio ho
utilizzato la
funzione WrapText (unit SysUtils).
Come descritto nell'oggetto, passando il risultato della funzione al metodo
Add della
TStringList viene aggiunta una sola stringa; invece passandolo al metodo Add
della property
Lines (TStrings) di un controllo Memo vengono aggiunte tante linee quante ne
risultano in
base al criterio di divisione specificato.
In base a questo ho dedotto che il metodo Add della TStringList non
riconosce i l carattere
di fine riga. Sapreste spiegarmi il perché di questa differenza di
comportamento dei due
metodi, visto che TStringList deriva da TStrings? Esiste qualche funzione
simile alla
WrapText che mi è sfuggita?
Uso il Delphi 6 Personal Edition.
Grazie a chiunque vorrà dare un chiarimento a questo novellino.
PS
Scusate se non potrò interagire tempestivamente ma, essendo uno studente,
non ho la
possibilità di connettermi con frequenza per controllare le eventuali
risposte ricevute.
--
Ryo

Ryo
	Ciao
	MassimoB
 
---------------------------
http://www.massimobeschi.it/

 WrapText che mi è sfuggita?
Non è il metodo Add che si comporta diversamente ma il metodo Insert
che è dichiarato virtual abstract in TStrings. Non ho avuto modo di
analizzare il codice della vcl per capire questa differenza di
comportamento, ma puoi partire da qui come spunto.
guastatore

 Bè adesso dovrebbe bastare far 2+2 un pò di ctrl+click
Se non ho sbagliato a fare il 2+2 in base alla porzione di codice di
esempio che hai postato, dovrei creare una nuova classe che
implementi una proprietà di tipo TStrings che erediti i metodi da
TMemoStrings. Sto sbagliando o sono riuscito a centrare il problema?
O forse e' meglio, vista la mia scarsa dimestichezza con classi ed
ereditarita', utilizzare una variabile di tipo TMemo?
Ho verificato e la classe di appartenenza e' proprio TMemoStrings.
Ma nella guida non c'e' traccia di questa classe, puoi indicarmi qualche
link in cui viene trattata questa classe?
Grazie per la risposta alquanto chiara ed esauriente,
almeno per la mia scarsa conoscenza della materia. :)
Ciao
PS
Spero di aver quotato bene.
--
Ryo

 ha scritto nel messaggio
news:sq1Ud.593929$b5.27...@news3.tin.it...


Esiste qualche funzione simile alla WrapText che mi è sfuggita?
Si, ExtractStrings. Dall'help:
"Fills a string list with substrings parsed from a delimited list.
Unit
Classes
Category
string handling routines (null-terminated)
Delphi syntax:
function ExtractStrings(Separators, WhiteSpace: TSysCharSet;
  Content: PChar; Strings: TStrings): Integer;
[...]
Description
Use ExtractStrings to fill a string list with the substrings of the
null-terminated string specified by Content.
[...]
ExtractStrings returns the number of strings added to the Strings parameter.
Note: ExtractStrings does not add empty strings to the list."
Mi bastava solo cercare un po' meglio dall'inizio. Pero' questo mi ha
'costretto' ad iniziare a guardare le classi con annessi e connessi. :-)
Ciao.
---
Ryo