Tablice dynamiczne

0

No wlasnie jak stworzyc dynamiczna tablie w pascalu ???

0

Niestety w pascalu nie da sie tworzyc dyn tablic. Oczywiscie nie zostajesz na lodzie bo mozesz tworzyc kolejki i rozne tego typu struktury danych opierajacych sie na wskaznikach

0

Niestety w pascalu nie da sie tworzyc dyn tablic.

Coo??? Jak to się nie da? To co to jest:

type
  TMyTab = array of integer;
var
  tab     : TMyTab;
begin
  SetLength(tab, DYNAMICZNIE_USTALANA_WIELKOSC_TABLICY);
end;

no chyba, że źle zrozumiałem, ale mowa była nie o dynamicznym tworzeniu talic, ale o tworzeniu dynamicznych tablic.

0

wyjaśnijmy... tablice dynamiczne dostępne są w języku Pascal dopiero od którejśtam wersji Delphi. Tak więc możesz stworzyć tablicę dynamiczną w Pascalu, jeżeli używasz kompilatora Delphi. W przeciwnym razie ci się nie uda.

0

wyjaśnijmy... tablice dynamiczne dostępne są w języku Pascal dopiero od którejśtam wersji Delphi.

Od 4-tej

Tak więc możesz stworzyć tablicę dynamiczną w Pascalu, jeżeli używasz kompilatora Delphi. W przeciwnym razie ci się nie uda.

Można stworzyć coś takiego pod "normalnym" Pascalem, ale z użyciem wskaźników i.t.p., jak to już ktoś napisał...
Niestety na wskaźnikach się nie znam i nie pomogę w tym

0

Stary, niestety jeżeli chcesz cos takiego zrobic pod tp. to musisz przede wszystkim sam zapamiętac rozmiar. No i oczywiście tylko getmem/freemem. Mark/release - są bez sensu, bo musiałbys dorobic swój menedżer pamieci, na pascalowy, który siedzi nad dosowym, pochrzana. I ciągłe move do przerzucania wartosci ze starego obszaru do nowego. w ogóle bez sensu robic to w tp. lepiej tc, bo bezpośrednoio operujesz na menedzerze dosowym. poza tym tam jest realloc, a w pascalu nie ma, bo ... juz wspomniałem menedzer siedzi ponad dosowym. Chyba że sobie oprogramujesz. Wrzuciłem mem.zip. Dokładnie chodzi mi o umb.pas - tam jest pokazane, jak to draństwo pascalowe działa.

Gdyby tp. miał normalny menedżer...

Wiesz co napisz sobie w c++ albo asm (w zależności co dla Ciebie łatwiejsze) bibliotekę z malloc, free, a zwłaszcza z realloc, skompiluj do obj. Zrób z tego modul pascalowy albo zrób sobie od razu modul, korzystający z dosowego menedżera (intr($21,regs)/msdos(regs)/asm int 21h). W pascalu wpisz {$m stacksize,0,0},a w usesach nowy modul z menedżerem pamięci... tylko uważaj, bo podstawowe moduły korzystaja ze standardowego.

Wiem przyciężkie to, ale da sie zrobić, ewentualnie getmem/move/freemem.

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