StringStream

asdfghjkl

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

4

734

    Vastaukset 4

    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. Mihin kiinnitit ensimmäisenä

      huomiota kaivatussasi?
      Ikävä
      98
      1284
    2. Poutalan onnettomuus

      https://www.mtvuutiset.fi/artikkeli/ministeri-mika-poutala-vakavassa-onnettomuudessa/9375980 Kumma kun jutussa ei manit
      Maailman menoa
      103
      1039
    3. Koska olet ihastunut minuun

      Kysymys sulle. Oma vastaus, tänä vuonna. ❤️
      Ikävä
      61
      887
    4. Missä on Sofia Virta? Loistaa poissaolollaan Erikoisjoukot uudelta kaudelta

      Vihreiden puheenjohtaja, kansanedustaja Sofia Virta pääsi otsikoihin, kun tieto hänen osallistumisestaan Erikoisjoukot-k
      Kotimaiset julkkisjuorut
      38
      860
    5. Olen pahoillani

      Olen mokannut pahasti ja pilannut sinun ja monen muun ihmisen maineen. Anteeksi. Muutan toiselle paikkakunnalle. Hyvästi
      Ikävä
      54
      852
    6. Junaonnettomuus

      Kuka jäi junan alle?
      Haapajärvi
      3
      808
    7. Onko sinulla vihan tunteita

      Minua kohtaan? Haluatko kostaa jotakin tai tehdä pahaa? Voit tähän sanoa ihan luottamuksella.
      Ikävä
      127
      794
    8. mitä olet valehdellut

      kaivatullesi? kerro rehellisesti totuus
      Ikävä
      64
      653
    9. Naisen kimppuun lenkkipolulla

      Poliisin tietojen mukaan noin 30–40 vuotias ulkomaalaistaustaisen näköinen mies kävi naisen kimppuun yllättäen Rentukant
      Kajaani
      47
      586
    10. Ei ole siitä kiinni

      Että en tykkäisi. Tykkään liikaa, mutta se on epäsopivaa. Hirveää kidutusta ruokkia tunnetta täällä, jos todellisuudessa
      Ikävä
      34
      540
    Aihe