StringStream

asdfghjkl

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

4

566

    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. Persujen kannatusromahduksen syynä bensan ja kaljan hinnan nostot

      Marinin aikaan bensalitra 1,3e ja laatikon Sandelsia sai Lidlistaä 22 eurolla. Nyt hinnat ovat nousseet noin 50 prosent
      Maailman menoa
      235
      3323
    2. Juhana Vartiainen(ex-sd): Köyhien pitää tehdä jotain elämälleen säilyttääkseen tukensa

      Juhana Vartiainen ehdottaa Suomeen ”Tanskan mallia”, jossa sosiaaliturvaa saadakseen pitäisi hakea ensisijaisesti etuuks
      Maailman menoa
      248
      3093
    3. Miksi tunnustukselliset muslimit saapuvat länteen?

      Onko koskaan kysytty, että miksi islamilaisesta maailmasta tuleva tunnustuksellinen muslimi tarvitsisi turvapaikkaa väär
      Maailman menoa
      225
      2321
    4. Kuka tekee näitä aloituksia

      jotka aina ovat tällaisia.... Nämä on jonkun saman ihmisen käsialaa, joka paukuttaa tänne loputtomasti ketjuja, joissa
      Ikävä
      35
      1982
    5. En ymmärrä näitä SDP:n ja muun vasemmiston kannattajia

      Eivätkö ihmiset tiedä, että Suomen ongelmat johtuvat vasemmistolaisesta yhteiskuntamallista? Suomessa on ollut vasemmis
      Maailman menoa
      125
      1665
    6. Mikä on mielestäsi paras miestyyppi?

      Esimerkit kärjistettyinä: a) perustavallinen/tasainen b) himourheilija c) varakas, turvallinen elättäjä d) puolikrimina
      Ikävä
      215
      1416
    7. Sofia servasi Pikku-Villen suvereenisti

      – Ihanko tosissaan tuleva sosiaali- ja terveysministeri hyökkää oppositiopuolueen puheenjohtajaa vastaan siksi, että täm
      Maailman menoa
      10
      1212
    8. Rippituoli

      Kerro joku synkkä tai outo salaisuus, joka liittyy ikävääsi kaivattuasi kohtaan. Tee tunnustus anonyyminä. Se helpottaa
      Ikävä
      90
      1185
    9. Rydmanin nousu sote-ministeriksi on kauttaaltaan irvokas

      Mutta samalla se oli ainut todennäköinen lopputulema. Se myös alleviivaa sitä, mistä tällä hallituksella ja aivan erityi
      Maailman menoa
      200
      1100
    10. viikonloppu lähestyy

      ja tiiän sen jo valmiiks et en pysty olee selvinpäin. oisitpa kieltämässä ja rauhoittamassa minua. en tiedä olisiko sinu
      Ikävä
      13
      999
    Aihe