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

550

    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. Hyvää syntymäpäivää Sanna 40 vee!!!!

      ᕼᗩᑭᑭY ᗷIᖇTᕼᗞᗩY Sister ❣️🥰 🎉🎂✨🍰🥳 🥳🎂🥂 🎉🎊🎁🎈🎂
      Maailman menoa
      58
      5060
    2. Suomen kaksikielisyys - täyttä huuhaata

      Eivätkö muuten yksilöt pysty arvioimaan mitä kieliä he tarvitsevat? Ulkomaalaiselle osaajalle riittää Suomessa kielitai
      Maailman menoa
      54
      4562
    3. Työeläkeloisinta 27,5 mrd. per vuosi

      Tuo kaikki on pois palkansaajien ostovoimasta. Ja sitten puupäät ihmettelee miksei Suomen talous kasva. No eihän se kas
      Maailman menoa
      122
      4489
    4. Mikä on vaikeinta siinä, että menetti yhteyden kaivattuun, jota vielä ajattelee?

      Mikä jäi kaihertamaan? Jos jokin olisi voinut mennä toisin, mitä se olisi ollut? Mitä olisit toivonut vielä ehtiväsi san
      Ikävä
      295
      1680
    5. Paljonko sinulla ja kaivatullasi on ikäeroa??

      Ikä on vain numeroita 😁
      Rakkaus ja rakastaminen
      82
      1318
    6. Sulla on mies

      Aivan liikaa naisia.
      Ikävä
      228
      1308
    7. Kerro kaivattusi etunimi

      Miehille..
      Ikävä
      68
      1275
    8. 306
      1005
    9. Kadutko mitään?

      Minä kadun ikävässä kirjoittamista, mutta en saa sitä tekemättömäksi.
      Sinkut
      199
      930
    10. Pääsit koskettamaan

      Sellaista osaa minussa jota kukaan ei ole ennen koskettanut. Siksi on hyvin vaikea unohtaa sinut kokonaan.
      Ikävä
      50
      820
    Aihe