StringStream

asdfghjkl

Mihin TStringStream käytetään (eli mihin se soveltuu hyvin)?

4

733

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. Voisin jopa maksaa että saisin nähdä sut mies

      Miten helvetissä joku voi olla tollanen kotihiiri. Edes mä en ole noin paha ku sä! Miten sua voi ikinä edes nähdä ?
      Ikävä
      86
      1739
    2. Tumman vihreä mercedes

      Mikä se on tuo kylää ympäri ajava vihreä mercedes, takakontti tärisee kuin hullu ja välillä kylän juoppojakin kuskailee,
      Hyrynsalmi
      17
      1091
    3. Käyttäkää kumia kajaanilaisten naisten kanssa

      Elkää ottako riskiä ilman kumia kun saattaa käydä niin että sinusta tuleekin isä lapselle ja elättäjä molemmille.
      Kajaani
      98
      1046
    4. Miksi tällainen pelottaa ja aiheuttaa joillakin ärtymystä?

      "Sitoudun ystävien ja kollegoiden kanssa puuttumaan seksistisiin vitseihin ja vähättelyyn. Sanon ääneen, kun jokin ei ol
      Maailman menoa
      79
      952
    5. Uskaltaako tässä luottaa siihen että

      Ehkä rakastetaan toisiamme?
      Ikävä
      91
      794
    6. Jymyuutinen: Suomen talous kasvaa hurjaa vauhtia

      https://www.iltalehti.fi/talous/a/11fba8a8-a7fb-44f4-a58b-f129f6d5bdf5 Akavan pääekonomistin mukaan Suomen kokonaistuot
      Maailman menoa
      146
      779
    7. Tunnusmerkkejä Kaivatulle

      Jotain mistä toinen tunnistaa. Täällä vaalea nainen kaipaa miestä jolla vaaleat hiukset ja asuu maalla. Pelataanko kortt
      Ikävä
      51
      754
    8. Pakkomielle

      Tahdon pyytää anteeksi, että olen kaivannut sinua kaikki nämä vuodet ja olet ollut minulle pakkomielle. Nyt on aika pääs
      Ikävä
      50
      695
    9. Rakastan sinua

      Päivä päivältä enemmän 🥰 Miehelle.
      Ikävä
      53
      674
    10. Oletko nainen enää täällä?

      En ole tunnistanut kirjoituksiasi hetkeen. Ainoastaan yhdessä neutraalissa ketjussa, missä ei ollut kyse tunteista. Hyv
      Ikävä
      51
      671
    Aihe