TList

14+18

Miten tuota TList pitäisi käyttää (kokemusta lähinnä taulukoista)

Miten sillä tuodaan olion sisältä dataa?
Miten sillä viedään olion sisälle dataa?

Löytyisikö seimerkkiä näihin.

5

557

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Delphiguru

      "Miten tuota TList pitäisi käyttää (kokemusta lähinnä taulukoista)

      Miten sillä tuodaan olion sisältä dataa?
      Miten ?"

      siis...

      TList -luokka ei ole siksi, että sillä "tuodaan olion sisältä dataa" tai "sillä viedään olion sisälle dataa".

      VAAN:

      TList -luokka on luokka, joka sisältää objektiviitteitä, joita siihen on tallennettu.

      Siis:

      var

      L : TList;

      begin

      L := TList.Create;

      try

      L.Add(Objekti1);

      L.Add(Objekti2);

      L.Add(Objekti3);

      // Tässä voi käyttää ko. listaa. Esimerkiksi:

      for i := 0 to L.Count - 1 do begin

      if L[i] is TEdit then TEdit(L[i]).Text := 'haloo';

      if L[i] is TLabel then TLabel(L[i]).Caption := 'heippa';

      if L[i] is TStrings then TStrings(L[i]).add('Uuno Turhapuro');

      end;

      finally

      FreeAndNil(L);

      end;

      end;

      HUOM!

      Kannattaa kirjoittaa Delphin Editorissa TList, siirtää kohdistin alku- T:n kohdalle ja painaa Ctrl-F1, ja LUKEA (englanninkielinen) ohjeteksti avautuvasta ikkunasta.

      • 1 4 + 1 8

        Noi kysymykset oli tarkoitettu olevan vähän erillään.

        " TList -luokka ei ole siksi, että sillä "tuodaan olion sisältä dataa" tai "sillä viedään olion sisälle dataa"."


        Eli noihin kahteen viimeiseen kysymyksen
        ajatuksena on että minulla on olio johon kuuluu tuo lista.
        Miten luen sen (kokoinaisen) listan toiseen olioon.

        Ja vastaavasti miten siirrän toisesta oliosta tuollaisen listan.


      • Delphiguru
        1 4 + 1 8 kirjoitti:

        Noi kysymykset oli tarkoitettu olevan vähän erillään.

        " TList -luokka ei ole siksi, että sillä "tuodaan olion sisältä dataa" tai "sillä viedään olion sisälle dataa"."


        Eli noihin kahteen viimeiseen kysymyksen
        ajatuksena on että minulla on olio johon kuuluu tuo lista.
        Miten luen sen (kokoinaisen) listan toiseen olioon.

        Ja vastaavasti miten siirrän toisesta oliosta tuollaisen listan.

        riippuu muistinhallinnasta.

        Suomi24:n typerä forumsofta juuri tuhosi vastaukseni koska se ylitti 5000 merkkiä.

        Siis ei laskuria kirjoittamisen aikana ja lopuksi ilmoitus:

        "vastauksesi on liian pitkä"

        Kun tästä siirty toiselle välilehdelle, niin kirjoitettua tektiä ei saa takaisin mitenkään !

        Ratkaisu on periaatteessa helppo:

        Olio1.Lista.Assign(Olio2.Lista);

        missä molemmissa olioissa Lista on TList -tyyppiä.

        huomaa kuitenkin, että olet itse vastuussa oikeasta muistinhallinnasta!

        Formin omistamien käyttöliittymäkomponenttien osalta muistinhallinta on automaattista (perustuu Owner -kenttään), muuten olet siitä itse vastuussa.

        Jos muistinhallinta tuntuu hankalalta:

        http://www.justsoftwaresolutions.co.uk/delphi/using-interfaces-for-exception-safety.html

        http://edn.embarcadero.com/article/28217

        siis interface (ja TInterfacedObject) on tässä avainsana.


      • Kahvipapua
        Delphiguru kirjoitti:

        riippuu muistinhallinnasta.

        Suomi24:n typerä forumsofta juuri tuhosi vastaukseni koska se ylitti 5000 merkkiä.

        Siis ei laskuria kirjoittamisen aikana ja lopuksi ilmoitus:

        "vastauksesi on liian pitkä"

        Kun tästä siirty toiselle välilehdelle, niin kirjoitettua tektiä ei saa takaisin mitenkään !

        Ratkaisu on periaatteessa helppo:

        Olio1.Lista.Assign(Olio2.Lista);

        missä molemmissa olioissa Lista on TList -tyyppiä.

        huomaa kuitenkin, että olet itse vastuussa oikeasta muistinhallinnasta!

        Formin omistamien käyttöliittymäkomponenttien osalta muistinhallinta on automaattista (perustuu Owner -kenttään), muuten olet siitä itse vastuussa.

        Jos muistinhallinta tuntuu hankalalta:

        http://www.justsoftwaresolutions.co.uk/delphi/using-interfaces-for-exception-safety.html

        http://edn.embarcadero.com/article/28217

        siis interface (ja TInterfacedObject) on tässä avainsana.

        Harmi kun jää näkemättä näiden Delphi gurujen koodia


      • Delphikoodari..
        Kahvipapua kirjoitti:

        Harmi kun jää näkemättä näiden Delphi gurujen koodia

        Eli siis TList vain säilöö kokoelman pointereita, jotka siis osoittaa olioihin tai mihin tahansa dataan, sinne siis voi "upottaa" mitä tahansa materiaalia ja käydä läpi, tosi hyödyllinen tuo TList :)

        Yksi nopeutusvinkki myös TListin köytöstä, kun se pitää käydä läpi..

        for I := 0 to lista.count-1 do
        begin
        objektiX := TObjectiX( lista.List[I] );

        if Assigned( objektiX ) then
        begin
        //.. jeps...
        end;

        end;


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. 6 kW saunan lämmityksestä kohta 10 euron lisämaksu / kerta

      Kokoomuslainen sähköyhtiöiden hallitsema Energiavirasto ehdottaa 5 kW:n rajaa, jonka ylittämisestä tulee lisämaksu. Tark
      Maailman menoa
      146
      5495
    2. Minja jytkyttää vas.liiton kannatusta ylöspäin

      Alkaa raavaat duunarimiehetkin palaamaan vasemmistoliiton kannattajiksi. Eduskunnassahan on vain kaksi työntekijöiden p
      Maailman menoa
      136
      3598
    3. "Mitä sä nainen tuot sitten pöytään" ?

      Jos mies provaidaa ja suojelee... Pitääkö miesten kysyä tuollaisia?
      Ikävä
      126
      3329
    4. Ekologinen kommunismi tulee voittamaan fossiilikapitalismin

      Kiina on mahtitekijä uusiutuvien energialähteiden kehityksessä, ja Trump osoitus viimeisestä öljyn perään itkemisestä, m
      Maailman menoa
      36
      3213
    5. Mies, kerro minulle vielä jotakin aivan uniikkia

      ja ainutlaatuista minkä vain me kaksi voisimme ymmärtää jos olemme sen kokeneet ja eläneet, jotta ihan varmasti tietäisi
      Tunteet
      43
      2714
    6. Oikeistopuolueiden kannatus vain 37,8 %, vasemmiston 43,0 %

      Keskustaan jää 17,4 prosenttia ja loput ovat sitten mitä ovat. Mutta selvästikin Suomen kansa on vasemmalle kallellaan.
      Maailman menoa
      49
      2301
    7. Tiedän ettei

      Meistä mitään tule. Toinen oli sinulle tärkeämpi
      Ikävä
      24
      2230
    8. Hyviäkin uutisia tulossa, hallinto-oikeus asettaa toimeenpanokieltoon

      Hyvinvointitalon työmaa pysähtyy. Rillankivi+energia ja vesi kytkyrahanpesu stoppaa. Tytäryhtiöiden hallitusjäsenet+kon
      Pyhäjärvi
      229
      2176
    9. prööt prööt nyt ottaa vihervassaria pattiin!

      Korvatkaa R kirjaimet L kirjaimilla ja sanokaa ääneen "Jari Kurri etsii pakoputkiautossaan jarruja".
      Maailman menoa
      11
      1914
    10. Gallup: Mikä on ollut mielestäsi paras tv-sarja ikinä?

      Gallup: Mikä on ollut mielestäsi paras tv-sarja ikinä? Onko se joku suomalainen viihdepläjäys, brittirikossarja, amerikk
      Tv-sarjat
      93
      1816
    Aihe