Tablica dynamiczna

0

Moj wczesniejszy temat zostal usuniety z niewiadomych powodow, wiec pytam jeszcze raz (chyba nie robie tym nic zlego:) ).

var
  t: array of char;
  eg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;
  reg.OpenKey('\', true);
  SetLength(t, reg.GetDataSize('x'));
  reg.ReadBinaryData('x', t, sizeof(t));
  ShowMessage(pchar(t));
  reg.CloseKey;
  reg.Destroy;
end;

Dlaczego ten kod nie dziala??

0

podaj co ci kompilator wywala.

0

Kompilator nic nie wywala. W moim przypadku powinno mi sie wyswietlic "FFE", ale tak nie jest. Showmessage wyswietla puste okienko. Moze ja zle mysle, albo juz nie wiem co jest grane. HELP!!!

0

cnie znam się zbytnio na rejestrach, ale ort! morze sprawdzić wartość tego: reg.GetDataSize('x') czy przypadkiem nie jest 0. Jeśli nie to to ja bym jeszce pokombinował przy samym wyświetlaniu w Showmessage, może bez PChar?

0

ShowMessage(pchar(t));

To jest źle bo Showmessage pobiera jako argument stringa a nie pchara (zupelnie nie wiem dlaczego to sie kompiluje)

reg.ReadBinaryData('x', t, sizeof(t));

to tez jest źle bo sizeof(t) zawsze zwraca 4. Powinno byc length(t);

Pozdrawiam

aha i zamiast

reg.ReadBinaryData('x', t, sizeof(t));

powinno byc reg.ReadBinaryData('x', t[0], length(t));

t i t[0] to co innego wbrew niektorym błędnym wskazówkom ktore pojawiają sie na tym forum.

0

Pchar jest dobrze uzyty :) ale tego nie rozumiem o co chodzi z tym length, ale masz racje. t[0] zamiast t, Tez racja. Trzeba podac od ktorego argumentu ma zaczac przypisywac :)
Wielkie THX!!!

0

ale tego nie rozumiem o co chodzi z tym length

length - zwraca dlugosc stringa/ tablicy

sizeof - zwraca rozmiar zajmowanej pamieci przez zmianna.

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