StringStream

asdfghjkl

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

4

733

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

      juuri nyt kaivatullesi jos uskaltaisit/kehtaisit?
      Ikävä
      150
      1469
    2. Mitä hyvää

      Mitä hyvää hän on tuonut elämääsi?
      Ikävä
      104
      911
    3. Mikä teidän jutussa on ongelmana?

      Missä meni pieleen?
      Ikävä
      75
      723
    4. 51
      625
    5. Koillis motor

      Kyllä on mennyt palvelu alas ku lehmänhäntä, sovitut asiat ja luvatut soitot pitää hoitaa eikä tehä oharia, täysin tumpa
      Suomussalmi
      15
      573
    6. ABC: n kahvilan uusi nimi matkimalla

      Kahvia ja virvokkeita myytiin aikoinaan ÄKKI-VANNIN KAHVILASSA Haapavedellä ja paikalliset sanoivat sitä haussia "Tuhann
      Haapavesi
      40
      504
    7. Kylillä ei ole näkynyt? Missä luuraat nainen?

      Olisit soittanut mulle nainen. Oltais voitu nähdä vaikka laavulla. Miksi pelkäät minua? Eihän siinä ole mitään järkeä. m
      Suhteet
      155
      471
    8. Tehdäänkö tänään toiveista totta?

      Poikkea tänä illasta siinä lähellä ja annetaan silmien puhua ja sen jälkeen puhu sinä lopulta mitä ajattelet..
      Ikävä
      37
      453
    9. Missä näet kaivattuasi?

      Mitä teet silloin? Tuleeko pakene reaktio? Vai hellä tunne ja ere..
      Ikävä
      26
      409
    10. Rydman sivuutti mutupohjalta asiantuntija-arviot tutkimusrahoitusta myönnettäessä

      Onko Rydman sopiva tai kykenevä toimimaan ministerinä? Ei ole. Ministerit ovat joutuneet puhuteltaviksi vähemmästäkin;
      Maailman menoa
      185
      402
    Aihe