Mam taką tablicę:
Tablica : array[0..199, 0..4] of String;
Jak ją teraz w najprostszy sposób zapisać do pliku .xml by potem móc tą tablicą załadować z powrotem? Lub jakiś inny sposób bym mógł załadować moją tablicę po ponownym uruchomieniu programu
Mam taką tablicę:
Tablica : array[0..199, 0..4] of String;
Jak ją teraz w najprostszy sposób zapisać do pliku .xml by potem móc tą tablicą załadować z powrotem? Lub jakiś inny sposób bym mógł załadować moją tablicę po ponownym uruchomieniu programu
Możesz zapisać to do pliku INI, podzielonego na 5 sekcji o 200 kluczach.
procedure Zapisz;
var
Tablica : array [0..4, 0..199] of String;
INI: TINIFile;
I, J : Integer;
begin
INI := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'plik.ini');
for I := 0 to 4 do
for J := 0 to 199 do
try
INI.WriteString('Sekcja' + IntToStr(I), Klucz + IntToStr(J), Tablica[I, J]);
finally
INI.Free;
end;
end;
Odczytujesz tak samo, tylko że linijkę INI.WriteString... zamień na
Tablica[I, J] := INI.ReadString('Sekcja' + IntToStr(I), Klucz + IntToStr(J), 'wartosc');
Się męczysz.
string[] data = System.IO.File.ReadAllLines("pliczek");
// pobranie elementu [x,y]
data[x*4+y];
A fuj to nie C# tylko Delphiok :D
var data:TStringList;
...
data:=TStringList.Create();
data.LoadFromFile('pliczek');
// pobranie elementu [x,y]
data[x*5+y];
Pierwszy kod mi nie działa poprawnie, dziwnie to zapisuje i nie potrafi odczytać:
Tak to zapisuje, to poprawne?:
[Sekcja0]
Klucz0=tablica 0 element 0
Klucz1=tablica 0 element 1
Klucz2=tablica 0 element 2
Klucz3=tablica 0 element 3
Klucz4=tablica 0 element 4
Klucz5=tablica 1 element 0
Klucz6=tablica 1 element 1
Klucz7=tablica 1 element 2
Klucz8=tablica 1 element 3
Klucz9=tablica 1 element 4
Klucz10=
Klucz11=
Klucz12=
Klucz13=
Co do drugiego kodu to to samo odczytywanie stringlist z pliku, gdzie tu zapis tablicy ?
Powinno zapisać tak
[Sekcja1]
Klucz1=ElementTablicy1na1
Klucz1=ElementTablicy1na2
Klucz1=ElementTablicy1na3
[...]
[Sekcja2]
Klucz1=ElementTablicy2na1
Klucz1=ElementTablicy2na2
Klucz1=ElementTablicy2na3
[...]
[Sekcja3]
Klucz1=ElementTablicy3na1
Klucz1=ElementTablicy3na2
Klucz1=ElementTablicy3na3
[...]
edit: Według mojego kodu.
procedure TForm1.Zapisz;
var
INI: TINIFile;
I, J : Integer;
begin
INI := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'plik.ini');
for I := 0 to 4 do
for J := 0 to 199 do
try
INI.WriteString('Sekcja' + IntToStr(I), 'Klucz' + IntToStr(J), Posty[I, J]);
finally
//INI.Free;
posty.
end;
end;
procedure TForm1.Otworz;
var
INI: TINIFile;
I, J : Integer;
begin
INI := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'plik.ini');
for I := 0 to 4 do
for J := 0 to 199 do
try
Posty[I, J] := INI.ReadString('Sekcja' + IntToStr(I), 'Klucz' + IntToStr(J), 'wartosc');
finally
//INI.Free;
end;
end;
INI.Free musiałem tymczasowo dać w komentarz bo powoduje błąd acces violation nie wiem czemu ;/ Ale i tak zapisuje źle
A więc twierdzisz że nie potrafisz zapisać StringList do pliku?
<przerwa na śmiech>
data.SaveToFile("pliczek");
Się męczycie.
procedure TForm1.Zapisz;
var
INI: TINIFile;
I, J : Integer;
begin
INI := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'plik.ini');
try
for I := 0 to 4 do
for J := 0 to 199 do INI.WriteString('Sekcja' + IntToStr(I), 'Klucz' + IntToStr(J), Posty[I, J]);
finally
INI.Free;
end;
end;
procedure TForm1.Otworz;
var
INI: TINIFile;
I, J : Integer;
begin
INI := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'plik.ini');
try
for I := 0 to 4 do
for J := 0 to 199 do Posty[I, J] := INI.ReadString('Sekcja' + IntToStr(I), 'Klucz' + IntToStr(J), 'wartosc');
finally
INI.Free;
end;
end;