StringStream

asdfghjkl

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

4

726

Äänestä

    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ä.

    Takaisin ylös

    Luetuimmat keskustelut

    1. Kela tukee virallisesti Pride-liikettä

      Iso kiitos Kansaneläkelaitokselle tuen osoittamisesta myös vähemmistöille. Näin toimii vastuullinen valtiollinen koko k
      Maailman menoa
      154
      4836
    2. On tiedossa, että venäjämieliset diggaavat diktatuurista venäjää

      jossa ei esim. ole sanan- ja lehdistönvapautta. Mutta keitä nämä venäjän palvojat sitten ovat, ei heitä toki paljon ole
      Maailman menoa
      19
      2119
    3. Vihreiden, SDP:n ja Vasemmistoliiton kannattajista selvästi alle puolet on miehiä

      ja silti joku punafeministi valitti kokoomuksen naiskannattajien puutteesta, vaikka siellä on enemmän naisia kuin punavi
      Maailman menoa
      35
      1996
    4. Belfastissa käynnissä kunnon persuilu

      Joku random mamu tekee rikoksen, niin sikäläiset naamiopersut kostavat tuhoamalla kantaävestön omaisuutta. Liekö siellä
      Maailman menoa
      16
      1869
    5. Kävisikö tällainen sopimus?

      Olisitko valmis juttelemaan jo ensi viikolla kahden kesken?
      Ikävä
      114
      1857
    6. Nyt kerrot mies mitä ajattelet minusta

      Ihan suoraan ja suodattamatta.
      Ikävä
      93
      1678
    7. Persujen kannatusromahdus tekee kesästä 2026 nautinnollisen

      Satoi tai paistoi, niin Suomen kansalaisella on kuluvana kesänä syytä hymyyn. Niin upealta tuntuu persujen kannatusroma
      Maailman menoa
      46
      1337
    8. Mitä kirjainta haluaisit

      Ra kastella mahdottomasti?
      Ikävä
      67
      1202
    9. Odotatko vielä vastausta...

      Siihen viestiin? 🤔
      Ikävä
      119
      1151
    10. Omasp hakenut Fincapia ja Gapconia konkurssiin perjantaina 5.6

      Ilkka ei ole vielä ehtinyt uutisoida, mutta Omasp on jättänyt 5.6 konkurssihakemuksen Fincapia ja Gapconia koskien. Ilka
      Seinäjoki
      27
      1093
    Aihe