wksaźnik tablicy rekordów

0

Witam,
wiem, że temat był poruszany. San trochę czytałem o wskaźnikach, ale nadal mam problem z użyciem wskaźnika. Mianowicie w bibliotece Bass.dll mam zadeklarowany typ:

    BASS_BFX_ENV_NODE = packed record
        pos: DOUBLE;                  // node position in seconds (1st envelope node must be at position 0)
        val: FLOAT;                   // node value
    end;
    PBASS_BFX_ENV_NODES = ^TBASS_BFX_ENV_NODES;
    TBASS_BFX_ENV_NODES = array[0..maxInt div sizeOf(BASS_BFX_ENV_NODE) - 1] of BASS_BFX_ENV_NODE;

    BASS_BFX_VOLUME_ENV = record
        lChannel: Integer;            // BASS_BFX_CHANxxx flag/s
        lNodeCount: Integer;          // number of nodes
        pNodes: PBASS_BFX_ENV_NODES;  // the nodes
        bFollow: BOOL;                // follow source position
    end;

 

i chciałbym utworzyć 2-elementową tablicę
kanaly:PBASS_BFX_ENV_NODES;

nie wiem, jak teraz przypisać do tablicy wartości.

 
       kanaly[0].pos := 0;
       kanaly[0].val := 0;
         
       kanaly[1].pos := 5;
       kanaly[1].val := 1;

wywała AccessVioletion. Próbuję z ^ ale ciągle to samo. Jak mogę wypełnić tablicę? Z góry dzięki za pomoc.

0

poczytaj po co i do czego stosuje się new i dispose

0

Wiem, że trzeba użyć New, ale New(kanaly) nic nie daje, a New(kanaly[0]) nie kompiluje się, więc nie wiem, jak użyć tego operatora. Może ktoś pomóc?

0

Wiem, że trzeba użyć New, ale New(kanaly) nic nie daje

No to zapewne źle to robisz. Nie wiem czemu w ogóle deklarujesz to jako pointer.

Może ktoś pomóc?

Google i debugger ci pomogą. W google znajdziesz opis debuggera, debugger pomoże znaleźć błąd, a google rozwiązanie. Jeżeli będziesz mieć problemy to możesz umieścić opis z debuggera.

0

Używałem wskaźnika bo tak jest w bibliotece.

W linii

New(kanaly[0]);

wywala błąd:
[Error] Unit1.pas(278): Incompatible types

0

Używałem wskaźnika bo tak jest w bibliotece.

Wow, o operatorze pobrania adresu nie słyszał?

wywala błąd

Zrozumiesz że masz użyć debuggera do znalezienia błędu wykonania? Poszukaj w googlach, będziesz mądrzejszy i przestaniesz marnować nasz cenny czas na nieistotne odpowiedzi...
Wow, to nawet nie jest forum newbi więc nie muszę tłumaczyć co masz wpisać w googla.

0

nie było by łatwiej podać tę linijkę? Wolę się uczyć na przykładach niż teroii

0

Wolę się uczyć na przykładach niż teroii

No to tutaj masz przykład że nie dajesz sobie rady. Naucz się używać debuggera albo skoro nie chcesz się uczyć to męcz się z tym przykładem sam... Ja już powiedziałem co masz zrobić, żeby rozwiązać swój problem, jeżeli nie interesują cię moje rozwiązania to spoko, ja do niczego nie zmuszam.

nie było by łatwiej podać tę linijkę?

Nie byłoby z dwóch powodów:
1.Uczyłbyś się polegania na nas w sprawie tak banalnych problemów jak ten.
2.Nie wiedziałbyś co robisz, co powodowałoby że nie umiałbyś tego zastosować w nieco zmienionych warunkach.

'Daj komuś rybę a nakarmisz go na jeden dzień. Naucz go łowić ryby a nakarmisz go na całe życie' FTW.

1 użytkowników online, w tym zalogowanych: 0, gości: 1