Usprawnienie kodu + zapis zmiennych.

0

Witam chciałbym zapisac wartosc zmiennych do pliku żeby móc wyczytać to po ponownym uruchomieniu pliki, jak to zrobić?
+
chciałbym wiedzieć czy da się to zrobić w jakis pętlach:

procedure TForm1.btnsavewojoClick(Sender: TObject);
procedure TForm1.btnsavewojoClick(Sender: TObject);
begin

if speedbutton1.visible = false
then
begin
speedbutton1.caption := nazwaulubione.text;
speedbutton1.visible := true;
tablica[0][1] := pik.text;
tablica[0][2] := miecz.text;
tablica[0][3] := top.text;
tablica[0][4] := luk.text;
tablica[0][5] := zwiad.text;
tablica[0][6] := lk.text;
tablica[0][7] := lnk.text;
tablica[0][8] := ck.text;
tablica[0][9] := taran.text;
tablica[0][10] := kat.text;
tablica[0][11] := rycek.text;
tablica[0][12] := szlachta.text;
tablica[0][13] := xataku.text;
tablica[0][14] := yataku.text;
tablica[0][15] := celkatas.text;
end


else
if speedbutton2.visible = false
then
begin
speedbutton2.caption := nazwaulubione.text;
speedbutton2.visible := true;
tablica[1][1] := pik.text;
tablica[1][2] := miecz.text;
tablica[1][3] := top.text;
tablica[1][4] := luk.text;
tablica[1][5] := zwiad.text;
tablica[1][6] := lk.text;
tablica[1][7] := lnk.text;
tablica[1][8] := ck.text;
tablica[1][9] := taran.text;
tablica[1][10] := kat.text;
tablica[1][11] := rycek.text;
tablica[1][12] := szlachta.text;
tablica[1][13] := xataku.text;
tablica[1][14] := yataku.text;
tablica[1][15] := celkatas.text;
end


else
if speedbutton3.visible = false
then
begin
speedbutton3.caption := nazwaulubione.text;
speedbutton3.visible := true;
tablica[2][1] := pik.text;
tablica[2][2] := miecz.text;
tablica[2][3] := top.text;
tablica[2][4] := luk.text;
tablica[2][5] := zwiad.text;
tablica[2][6] := lk.text;
tablica[2][7] := lnk.text;
tablica[2][8] := ck.text;
tablica[2][9] := taran.text;
tablica[2][10] := kat.text;
tablica[2][11] := rycek.text;
tablica[2][12] := szlachta.text;
tablica[2][13] := xataku.text;
tablica[2][14] := yataku.text;
tablica[2][15] := celkatas.text;
end

else
if speedbutton4.visible = false
then
begin
speedbutton4.caption := nazwaulubione.text;
speedbutton4.visible := true;
tablica[3][1] := pik.text;
tablica[3][2] := miecz.text;
tablica[3][3] := top.text;
tablica[3][4] := luk.text;
tablica[3][5] := zwiad.text;
tablica[3][6] := lk.text;
tablica[3][7] := lnk.text;
tablica[3][8] := ck.text;
tablica[3][9] := taran.text;
tablica[3][10] := kat.text;
tablica[3][11] := rycek.text;
tablica[3][12] := szlachta.text;
tablica[3][13] := xataku.text;
tablica[3][14] := yataku.text;
tablica[3][15] := celkatas.text;
end

else
if speedbutton5.visible = false
then
begin
speedbutton5.caption := nazwaulubione.text;
speedbutton5.visible := true;
tablica[4][1] := pik.text;
tablica[4][2] := miecz.text;
tablica[4][3] := top.text;
tablica[4][4] := luk.text;
tablica[4][5] := zwiad.text;
tablica[4][6] := lk.text;
tablica[4][7] := lnk.text;
tablica[4][8] := ck.text;
tablica[4][9] := taran.text;
tablica[4][10] := kat.text;
tablica[4][11] := rycek.text;
tablica[4][12] := szlachta.text;
tablica[4][13] := xataku.text;
tablica[4][14] := yataku.text;
tablica[4][15] := celkatas.text;
end

















procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
pik.text := tablica[0][1];
miecz.text := tablica[0][2];
top.text := tablica[0][3];
luk.text := tablica[0][4];
zwiad.text := tablica[0][5];
lk.text := tablica[0][6];
lnk.text :=  tablica[0][7];
ck.text := tablica[0][8];
taran.text := tablica[0][9];
kat.text := tablica[0][10];
rycek.text := tablica[0][11];
szlachta.text := tablica[0][12];
xataku.text := tablica[0][13];
yataku.text := tablica[0][14];
celkatas.text := tablica[0][15];
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
pik.text := tablica[1][1];
miecz.text := tablica[1][2];
top.text := tablica[1][3];
luk.text := tablica[1][4];
zwiad.text := tablica[1][5];
lk.text := tablica[1][6];
lnk.text :=  tablica[1][7];
ck.text := tablica[1][8];
taran.text := tablica[1][9];
kat.text := tablica[1][10];
rycek.text := tablica[1][11];
szlachta.text := tablica[1][12];
xataku.text := tablica[1][13];
yataku.text := tablica[1][14];
celkatas.text := tablica[1][15];
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
pik.text := tablica[2][1];
miecz.text := tablica[2][2];
top.text := tablica[2][3];
luk.text := tablica[2][4];
zwiad.text := tablica[2][5];
lk.text := tablica[2][6];
lnk.text :=  tablica[2][7];
ck.text := tablica[2][8];
taran.text := tablica[2][9];
kat.text := tablica[2][10];
rycek.text := tablica[2][11];
szlachta.text := tablica[2][12];
xataku.text := tablica[2][13];
yataku.text := tablica[2][14];
celkatas.text := tablica[2][15];
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
pik.text := tablica[3][1];
miecz.text := tablica[3][2];
top.text := tablica[3][3];
luk.text := tablica[3][4];
zwiad.text := tablica[3][5];
lk.text := tablica[3][6];
lnk.text :=  tablica[3][7];
ck.text := tablica[3][8];
taran.text := tablica[3][9];
kat.text := tablica[3][10];
rycek.text := tablica[3][11];
szlachta.text := tablica[3][12];
xataku.text := tablica[3][13];
yataku.text := tablica[3][14];
celkatas.text := tablica[3][15];
end;

procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
pik.text := tablica[4][1];
miecz.text := tablica[4][2];
top.text := tablica[4][3];
luk.text := tablica[4][4];
zwiad.text := tablica[4][5];
lk.text := tablica[4][6];
lnk.text :=  tablica[4][7];
ck.text := tablica[4][8];
taran.text := tablica[4][9];
kat.text := tablica[4][10];
rycek.text := tablica[4][11];
szlachta.text := tablica[4][12];
xataku.text := tablica[4][13];
yataku.text := tablica[4][14];
celkatas.text := tablica[4][15];
end;
end
0

da się, ale pod warunkiem że tablica będzie miała elementy typu shortstring. zwykłego „stringa” bezpośrednio nie zapiszesz.

0

Mam pewnego pomysła tylko nie wiem jak zapisać takie cos.

:= p[z].Text;

Gdzie p to nazwa edita np. p1 a z to integer - zmienna. Tylko ze to nie łapie czytałem cos, że trzeba stworzyć samemu edity(tablicą), czy nie ma innego wyjscia?

1

FindComponent + google.

1

Jest, mianowicie TForm.Components, ale to już zabawa w dziedziczenie klas, IS i AS.
Podpowiem:

for i:=0 to ComponentCount-1 do if (Components[i] is TEdit) then
begin
case Components[i] as TEdit.Tag of
 //Tutaj zależnie od Tag jakie ustawiłeś, wiesz o który TEdit chodzi, zapisujesz Components[i] as TEdit.Text:=tablica[x][y];

Co do zapisywania, to zrób to Textem..

procedure Zapisz;
var
f:system.text;
begin
assign(f,'plik.txt');
{$I-}rewrite(f);{$I+}
if IOResult<>0 then ;//Tutaj co jeśli błąd zapisu
writeln(f,tablica[?,?]);//Dla każdego elementu
close(f);
end;

A wczytywanie zrób se sam, w końcu musisz się czegoś uczyć.

0

da zrobić się to zapisywanie w pętli?
Chodzi mi tu konkretnie o
writeln(f,tablica[?,?])

co w stylu

for z:= 1 to 10 do
writeln(f,tablica[z,z])
0

Da się, zobacz sobie przykład kodu dołaczonego do tego posta. Polecam używać raczej typu TStream (u mnie używam TMemoryStream) niż gorsze w obsłudze podstatowe typy File. Przykład powinien wyjaśnić Tobie wszystko. Masz tam zapis ShortString. Jednak ja osobiście wolę zapisywać w plikach typowanych przed zwykłym stringiem jego długośc jako zmienną typu integer zajmie to 4 bajty plus długośc stringa. który może być jednoznakowy. Mniej bajtów się zapisuje w sumie, bo rzadko kiedy wpisujemy w jakieś pola bez długich opisów - coś dłuższego. Ale wiadomo po ewentualnej kompresji TMemoryStreama ZLibem i tak wychodzi w miare mały rozmiar. Jednak jeżeli jesteś początkujący oraz masz pewnośc że nie przekroczysz 256 znaków w tekstach w polach edycyjnych to może wystarczyć Tobie typ ShortString.

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