Mihin TStringStream käytetään (eli mihin se soveltuu hyvin)?
StringStream
4
675
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
Marinin hallituskaudella Suomen BKT sentään kasvoi
Tämä ns. kauhukabinetti ei ole saanut aikaan kuin vahinkoa. Otti ennätysvelat rikkaiden veroalennuksiin ja sai työttömyy82062Huulitäytteet ja tekotisssit
Kylillä kulkiissa olen huomannut että tässäkin tuppukylässä on hameväki alkanut muokkaamaan ulkonäköään huulitäytteillä1101441Drone-epäily Uudellamaalla
Ihmisiä kehotetaan siirtymään sisätiloihin. https://www.is.fi/kotimaa/art-2000012008358.html1201185Sait mut mies heikoksi
Yllätti tämä asia nyt kyllä. Olet ollut mielessä koko ajan. Ei riitä pelkkä kevät nyt syyksi. Veit jalat alta. Pannaan m861074Vauvat syntyvöät vihan lapsina?
Kyllä on pimeä oppi, ja olen ollut täydessä pimeydessä opillisesti, että pienet lapset syntyisivät paholaisen lapsina. O661025Nuorille miehille ei kelpaa enää paljon käytetty nainen
"En ikinä huolisi mitään kyläpyörää", Tomi täräyttää TikTokissa https://www.iltalehti.fi/kotimaa/a/27182b8f-7759-49d0-81921010Unelma tilanne
Miten haluaisit, että tilanteenne etenisi tai miten toivoisit hänen lähestyvän sinua? Vai toimitko mielummin itse, jos j67795- 76760
Stefan Therman. Vakava syyte ja vankila uhkaa.
Nyt ei taida mies selvitä enää selityksillä.73642Oho! Martina Aitolehti teki radikaalin hiusmuutoksen - Uskaltaisitko itse?
Martina Aitolehti on menestyvä yrittäjä. Nyt hän on mukana Erikoisjoukot-realityssä. Erikoisjoukoissa Aitolehti nähdään42624