Mihin TStringStream käytetään (eli mihin se soveltuu hyvin)?
StringStream
4
522
Vastaukset
- 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
NO NIIN! Nyt on sitten prinsessa Sannan sädekehä lopullisesti rikottu
narsistia ei kannata enää kuin ne fanaattisimmat kulttilaiset, jotka ovat myös sitä Suomen heikkoälyisintä sakkia. Kun1074609Kansa haluaa Marinin hallituksen takaisin ja Orpon pois
Suomen kansa on nyt ilmoittanut millaisen hallituksen Suomi tarvitsee. "Suomalaisten suosikki seuraavaksi hallituspohja1734385Mikä piirre kaivatussa on sinulle se juttu?
Tunnetko kaivattuasi vai onko hän haavekuva, jota et edes tunne? Joskus tää asia ei ole niin selvää.941730- 4031661
HihhuIi-Päivi täpinöissään Viktorin tapaamisesta
Eiköhän nyt kaikille ole vihdoin selvää kenen joukoissa tämäkin putinisti seisoo. https://www.iltalehti.fi/politiikka/a331423Ensitreffit Matti ei vaikene enää - Rehellinen tilitys epäonnistuneesta suhteesta Elisaan
Häntä pystyyn, Matti! Olet mahtava tyyppi ja varmasti “se oikea” löytyy vielä! Elisan kanssa ei nyt vaan sitten natsann61109Upeeta! Rauha tulee pian!
Hieno suunnitelma ja se on toteutumassa alle kahdessa viikossa. Jihuu! Tätä on odotettukin, nyt se tulee! https://www.is3531100- 67979
- 56964
- 92938