Wczytanie tablicy

0

cześć...mam problem. Mam taką tablice :
map : array[0..30,0..15] of integer =
((0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0),
(0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0),
(0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0),
(0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0),
(0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));
Jak zrobić żeby po jakimś tam zdarzeniu (powiedzmy kliknięciu buttona:-)) tablica została na nowo wczytana z pliku kupa.txt
Plik kupa ma taką zawartość :
((0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0),
(1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0),
(1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0),
(1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0),
(1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0),
(0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));
Mam nadzieję że mnie zrozumieliście i proszę o szczegółową odpowiedź :-)

0
  1. sproboj zaladowac do memo (dynamicznego zwyklego)
  2. w petli znaki bierz
  3. dawaj do tablicy znak po x,y
  4. memo.free;
  5. flaszka
0

ajajaj, drajwer.. jak ty coś powiesz..

a3.. :

  1. Jeśli stosujesz tylko zera i jedynki to używaj odpowiedniego typu! czyli boolean w tym przypadku (a jeśli jesteś leniwy to chociaż zmień ten integer na byte[i policz ile pamięci zaoszczędzisz])..

  2. z zapisywaniem tablic nie ma problemu, pisałem o tym w tym poscie : http://4programmers.net/Forum/viewtopic.php?id=35884#55190. Zamień tylko odpowiednie zmienne...

0

Jesli rzeczywiscie sa to tylko 0 i 1 to zapis

map : array[0..30,0..15] of integer

mozna ograniczyc do
map:array[0..30,0..1] of byte;
i zapisywac wszystko na bitach, oszczednosc jest chyba oczywista tylko do odczytywania wartosci z tablicy musial bys napisac specjalna funkcje.

Dopisane:
Jesli chodzi o boolean to niestety zajmuje caly jeden bajt a nie 1 bit jak by sie moglo wydawac, ale na pewno jest odpowiedniejszy (od integer) do reprezentacji zer i jedynek.

0

Ten kod nie został sprawdzony (kompiluje się :P), mogš wystšpić małe jakie podczas działania. Kod jest bardzo podatny na błędy tego typu, że np. za dużo jest liczb w wierszu itd.

Var T:TextFile;
S:TStringList;
Mapa:Array[0..30,0..15] Of Integer;
L,I:Integer;
Linia:String;
Begin
AssignFile(T,'Mapa.txt');
Reset(T);
L:=-1;
S:=TStringList.Create;
Repeat
Inc(L);
Read(T,Linia);
S.CommaText:=Linia;
For I:=0 To S.Count-1 Do Mapa[L,I]:=StrToInt(S.Strings[I]);
Until (Eof(T)) Or (L=30);
CloseFile(T);
S.Free;
End;

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