StringStream

asdfghjkl

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

4

558

    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. Selvästi näyttää siltä, että SDP:n kannattajat hyväksyy kiusaamisen

      ja seksuaalisen ahdistelun, kun puolueen kannatus pysyy korkealla. Mitä tämä kertoo demari-äänestäjien moraalista?
      Maailman menoa
      188
      5091
    2. Kukka kuoli ja kukka tappo Kokkolassa?

      Ouluntiellä tapettu nainen torstaina kukka tappo?
      Kokkola
      14
      1751
    3. Kenen joukoissa Suomi seisoo maailmalla, jos SDP voittaa seuraavat vaalit?

      SDP on ainoa pohjoismainen sosialidemokraattinen puolue, joka edelleen kuuluu Sosialistiseen internationaaliin. Sitä ka
      Maailman menoa
      63
      1626
    4. Jos mies oikeasti haluaa sinut

      Hän ei ota riskiä että menettäisi sinut. Ei pienintäkään. Mies ei jätä vastaamatta viesteihin eikä pidä sinua epätietois
      Ikävä
      127
      1497
    5. Helena Puolakka laukoo suorat sanat Vappu Pimiän MasterChef -pestistä

      Vappu Pimiä on uusi MasterChef Suomi -tuomari. Kokenut keittiömestari ja ravintoloitsija Helena Puolakka laukoo suorat s
      Tv-sarjat
      9
      1463
    6. Voiko ryyppäämisellä tienata elantonsa?

      Lassi Kuhlman on rappiostriimaaja. Hän kuvaa omaa päihteiden käyttöään pitkissä somestriimeissä. Katsojat voivat lahjoit
      Maailman menoa
      50
      1147
    7. Ketä ehdotatte seuraavaksi kuntanne johtohahmoksi

      Ei ole teitä riitaisia kehityksen jarruja helppo yrittää kohti valoa ohjata. Siinä on teille pähkinä purtavaksi.
      Lappajärvi
      96
      1084
    8. Persuille 1,8 prosenttiyksikköä laskua. Keskusta meni ohi ja Vasl hengittää niskassa

      Erityisesti työväestö on hylkäämässä persut. https://yle.fi/a/74-20208249
      Maailman menoa
      302
      969
    9. Vasemmistoliitto menossa perussuomalaisten ohi!

      Keskustapuolue meni jo...
      Maailman menoa
      195
      941
    10. Dannyn "ex-käly" Jennika Vikman teki erikoisen ratkaisun!

      Dannyn "ex-käly" Jennika Vikman paljasti uudet kujeet. Hän on mukana kohutussa Sointu Borg & Tyrkyt -realityssä. Jääkö
      Suomalaiset julkkikset
      7
      820
    Aihe