Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Delphi - odczyt danych przez wskaźnik

leburaque 28 Apr 2011 21:31 1465 2
  • #1
    leburaque
    Level 17  
    Utworzyłem obiekt dodawany do TList:

    type
           PIteracja = ^Iteracja;
           Iteracja = record
                        X, Y, Z : byte;
                        A, B, C : char;
                      end;
    


    oraz zmienne których używam do utworzenia listy:

    var
      TymczasowaIteracja : Iteracja;
      IteTmp: PIteracja;
      ListaIteracji: TList;
    


    Tworzę listę i w pętli wczytuję z pliku wartości w niej:

      ListaIteracji := TList.Create;
    repeat
      { wczytuję do IteTmp wartości z pliku }
      ListaIteracji.Add(IteTmp);
    until Eof(plik)


    Aby odczytać Pointer do iteracji z listy używam:

    IteTmp := ListaIteracji[IteracjeScroll.Position];

    I tu pojawia się problem. Jak jednorazowo z Pointera IteTmp wczytać wszystkie zmienne ponownie do zmiennej TymczasowaIteracja?

    Dotychczas robiłem to "ręcznie":

         TymczasowaIteracja.X := IteTmp.X;
         TymczasowaIteracja.Y := IteTmp.Y;
         itd...
    


    Ale nie mogę za chiny ludowe zrobić czegoś w stylu: TymczasowaIteracja := ^IteTmp, bo kompilator zarzuca mi niezgodności. Jak z Pointera w TList otrzymać zmienną rekordową?

    P.S. Ostatnio uczę się w Delphi wszystkiego na raz, więc wybaczcie że pytam tu o wszystko. Naprawdę wcześniej googluję. Dziękuję za każdą wskazówkę. Pozdrawiam.
  • Helpful post
    #2
    beluosus
    Level 25  
    Sto lat nie pisałem w delphi, ale to chyba poprawne rozwiązanie:
    Code: delphi
    Log in, to see the code

    I może mała wskazówka, zanim zabierzesz się za takie rzeczy musisz mieć dobrze opanowane podstawy - w tym wypadku wskaźniki. Z tego co widzę to próbujesz wpisywać znaczki (np ^) w różne miejsca i sprawdzasz czy działa - to nie ma nic wspólnego z programowaniem.
  • #3
    leburaque
    Level 17  
    beluosus wrote:
    Sto lat nie pisałem w delphi, ale to chyba poprawne rozwiązanie:
    Code: delphi
    Log in, to see the code

    .


    Dzięki, po prostu jakoś mnie ociemniło z tym ^, teraz już wszystko jasne, działa 100%.

    Prawidłowo będzie:

    TymczasowaIteracja := IteTmp^;


    To jedynie mój błąd w "gramatyce" :), przepraszam, niepotrzebnie trułem. Wydawało mi się, że nie działa, bo przeszedłem do graficznego środowiska w tydzień:D

    Tutaj chciałeś chyba wczytać coś do wskaźnika:
    IteTmp := Iteracja(ListaIteracji[i]^)

    w sposób dla mnie nieco niezrozumiały, a to (pozwolę sobie na odrobinę ciętej riposty) nie ma nic wspólnego z programowaniem;)

    Tak czy siak - bez Twojej wskazówki, to bym pewnie siedział do dziś wlepiony w monitor. Klikam "pomógł". Pozdrawiam!