Miten merkkijonoluettelo pitäisi tuoda näihin monirivisiin
käyttöliittymäkomponentteihin.
xx.AddStrings( ) ?
xx.Assign( )?
xx.text :=
vai joku muu? (Miksi tämä)
Olisi hienoa jos olisi pieni selventävä esimerkki myös
Ongelmia stringien kanssa
MiTen se nyt On
3820
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 3
Vanhimmat
Eli jos nyt oikein ymmärsin kysymyksesi, niin alla oletettava vastaus: procedure TForm1.Button1Click(Sender: TObject); var sl : TStringList; begin sl := TStringList.Create; try sl.Add('1'); sl.Add('2'); sl.Add('3'); //Memo1.Lines.AddStrings(TStrings(sl)); //Memo1.Lines.Assign(sl); //Memo1.Lines.Text := sl.Text; finally sl.free; end; end; Vaihtoehdot kommentoituna, onnistuu vielä eri tavoinkin, mutta tuskinpa tarvitset lisää esimerkkejä.
Eri vaihtoehtoja on tarjolla mutta onko näiden suorituskyvyssä eroja ?
Ensinnäkin:
nopeuden maksimomiseksi, tee näin:
guiComponent.addStrings(SomeStrings);
eityisesti TMemo:on lisäys saattaa olla nopein näin:
memo1.Text := memo1.Text ^M^J SomeStrings.Text;
jos lisäät "käsin" yksittäisiä merkkijonoja, niin:
guiComponent.BeginUpdate;
try
// lisää 1 tai useampia merkkijonoja tässä, esim: guiComponent.Lines.Add('jotakin');
finally
guiComponent.EndUpdate;
end;
tuo addStrings -metodi kutsuu sisäisesti BeginUpdate / EndUpdate -paria nopeuden maksimoimiseksi.
huomaa myös: vanhoissa Win95/Win98/winME -käyttöjärjestelmissä niin memoissa kuin TListBoxeissakin on maksimi rivi/merkkimääräraja aika alhaalla.