StringStream

asdfghjkl

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

4

647

    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. Me, Suomen kansa, vaadimme Riikka Purran eroa ministerin tehtävästä

      Riikka Purra on toistuvalla valehtelullaan osoittanut olevansa epärehellinen henkilö. Perustuslain kohdassa 60 § edell
      Maailman menoa
      193
      7678
    2. Hotelli Kainuu konkurssiin

      Vasta laajenivat Eskobarilla ja nyt näin https://www.kainuunsanomat.fi/artikkeli/hotelli-kainuu-hakeutunut-konkurssiin
      Kuhmo
      109
      2877
    3. Rikkaiden ja yritysten veroaleen ei ole varaa

      Ei pieni Suomi pysty elättämään vanhenevaa väestöä nykyisellä veroasteella. Ainakin 5-prosenttiyksikköä pitää kokonaisve
      Maailman menoa
      78
      2812
    4. "Minua ei kiinnosta opiskelu eikä töissä käyminen"

      Voiko lausunnosta päätellä lainkaan mikä puolue saattaisi ajaa tuollaisen kansalaisen elämäntavan mahdollistamista? htt
      Maailman menoa
      110
      2301
    5. Huomentaaaa

      Hyvää huomenta.... Tiiätkö kuinka vaikeata susta on ottaa mitään selvää ja ymmärtää yhtään mitään? Mukavaa päivää... sil
      Ikävä
      38
      2142
    6. Yks vähemmän

      Yks narkki täälläkin vähemmän,m.t. sai mitä halusi😎
      Kiuruvesi
      13
      1902
    7. Nyt voin sanoa että vtuttaa!

      Kertaa sata 💯
      Ikävä
      18
      1458
    8. Ainutlaatuiselle naiselle.

      Osaat tietämättäsi tehdä edelleen suuren vaikutuksen minuun. Tämän piti olla jo ohi mennyttä mutta olin väärässä jällee
      Ikävä
      28
      1422
    9. Rottia juoksee pitkin ostolantietä

      Eikö mikään taho loukuta niitä. Tuhoavat kiinteistöjä
      Ähtäri
      20
      1256
    10. Rakastatko vielä

      Minua?
      Ikävä
      22
      1234
    Aihe