Mihin TStringStream käytetään (eli mihin se soveltuu hyvin)?
Vastaukset 4
- Mika0800
TStringStream
Mikset kirjoita koodiisi vaikkapa:
var
S1 : TStringStream;
sitten vain klikkaat sanaan TStringStream ja painat Ctrl-F1.
Delphissä on hyvä online -opastejärjestelmä, jota kannattaa käyttää.
toki täytynee mainita, etten muista kertaakaan itse käyttäneeni TStringStream -tyyppiä vaikka Delphillä olenkin ohjelmoinut.
Ja ainakin Delphi7:ssä tuon luokan toteutuksessa on sitäpaitsi virhe !
Seek -metodista löytyy tällaista:
case Origin of
soFromBeginning: { katso lähdekoodista }
soFromCurrent: { katso lähdekoodista }
soFromEnd: FPosition := Length(FDataString) - Offset;
end;
Ohjeen mukaan tuossa soFromEnd -tapauksessa Offsetin on oltava- Delphi koodari
Offset on datatyyppiä word, jonka lukualue on
0-65535, joten koodissa ei ole virhettä.
Streamit ovat käteviä, jos dataa pitää käsitellä nopeasti tai datan määrä on suuri.
- StringList <> StringS...
Miten sitten StringList eroaa StringStream:stä
(mitkä on niiden suurrimmat erot)- Mika0800
Delphin omasta Helpistä löytyy toki vastaus tuohonkin.
Lisäksi Classes.pas -tiedostosta on noiden lähdekoodikin tutkittavissa.
Tässäkin ketjussa jonkun on taas pitänyt päteä "tiedoillaan" jotka eivät edes pidä paikkaansa:
function Seek(Offset: Longint; Origin: Word): Longint; overload; virtual;
function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; overload; virtual;
tässä noiden TStream (josta TStringStream periytyy) -luokan metodimäärittelyjä - kuten selkeästi nähdään, niin Origin on toki tyyppiä word, mutta sehän voi olla vain jokin näistä kiinteistä arvoista:
JOKO: soBeginning, soCurrent, soEnd
TAI:
soFromBeginning = 0;
soFromCurrent = 1;
soFromEnd = 2;
(kätevä tuo overload - eikö ?)
Sensijaan Offset on etumerkillistä tyyppiä, ja jos esim. haluat lukea Streamin 2 viimeistä tavua, se todellakin hoituu näin:
var
S1:TStream;
W : Word;
begin
// koodia, jossa luodaan S1
// ....
//
S1.Seek(-2, soEnd);
// vaihtoehtoisesti voi toki myös:
// S1.Position := S1.Size - 2;
S1.ReadBuffer(W, SizeOf(W));
// vapauta;
FreeAndNil(S1);
end;
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 1381176
Mahdoton tilanne
Täällä monella tuntuu olevan jumissa oleva tilanne. Joillakin kaipuu ja ikävä on kestänyt jo vuosia. Osapuoli/puolet ova97889Välillä tulee haikeus
Et kaikki päättyi näin. Etten saanut vastauksia. Ei meitä oltu tarkoitettu. Niin se vain on.78844Tunteilla leikkiminen
Oletko leikkinyt kaivattusi tai jonkun kiinnostuneen tunteilla, pelannut jotain peliä tai pelleillyt asioilla? Miksi?113795- 31568
Mä olin ihan peloissani sun lähellä
Huomasitko? En uskaltanut edes katsoa sua. Näin sivu silmällä sun vinon hymyn. Oliko hyvä vai paha juttu kun tulit lähel20519On ikävä sinua ihana
En jaksa syvempiä tuntoja enää kirjoittaa. Kaipaan sinun läsnäoloa ja läheisyyttä nainen. Hyvää yötä.28513- 96501
- 45494
Kaipaamalleni naiselle
Hyvää iltaa! Täytyy vain toivoa että törmäämme toisiimme pian Toivoo. mies29437