Mihin TStringStream käytetään (eli mihin se soveltuu hyvin)?
StringStream
4
532
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
Mitä aiot tehdä uudenvuoden aattona
Mitä olet suunnitellut tekeväsi uudenvuoden aattona ja aiotko ensi vuonna tehdä jotain muutoksia tai uudenvuoden lupauks1943869Marin sitä, Marin tätä, yhyy yhyy, persut jaksaa vollottaa
On nuo persut kyllä surkeaa porukkaa. Edelleen itkevät jonkun Marinin perään, vaikka itse ovat tuhonneet Suomen kansan t512752Väestönsiirtoa itään?
Ano "the Russo" Turtiainen sai poliittisen turvapaikan Venäjältä. Pian lähtee varmaan Nazima Nuzima ja Kiljusen väki per741310Muistattekos kuinka persujen Salainen Akentti kävi Putinin leirillä
Hakemassa jamesbondimaista vakoiluoppia paikan päällä Venäjällä? Siitä ei edes Suomea suojeleva viranomainen saanut puhu171256Ikävä sinua..
Kauan on aikaa kulunut ja asioita tapahtunut. Mutta sinä M-ies olet edelleen vain mielessäni. En tiedä loinko sinusta va101159- 46944
Vuoden luetuimmat: Mikä on Pelle Miljoonan taiteilijaeläkkeen suuruus?
Pelle Miljoonan eläkkeen suuruus kiinnosti lukijoita tänä vuonna. Artikkeli on Suomi24 Viihteen luetuimpia juttuja v. 2020941- 47870
Riikka Purra sanoo, että sietokykyni vittumaisiin ihmisiin alkaa olla lopussa.
https://www.iltalehti.fi/politiikka/a/be8f784d-fa24-44d6-b59a-b9b83b629b28 Riikka Purra sanoo medialle suorat sanat vitt213822Väärä pää tutustumiseen
Mikä ihme on, että miehet haluavat ensimmäisenä sänkyyn? Onko nykyään niin helppo saada nainen peittojensa alle.. tai pä106632