Jak zapisac dane z tablicy typu string do pliku i odczytac ja i przypisac do labeli?

0

Witam. Jak zapisac dane z tablicy typu string do pliku i odczytac ja i przypisac do labeli?

Do elementow tej tablicy sa przypisane wartosci z Label.Caption. Jak je zapisac i jak po ponownym uruchomieniu programu po wcisnieciu WCZYTAJ wczytaj dane z tablicy i aby one wyswietlily sie na Labelach

Wycinki kodu

zmienne : array[0..9] of AnsiString;
plik:file;

 

Zapis

 procedure TForm2.Button2Click(Sender: TObject);
begin

zmienne[0]:=Label17.Caption;
zmienne[1]:=Label18.Caption;
zmienne[2]:=Label19.Caption;
zmienne[3]:=Label20.Caption;
zmienne[4]:=Label21.Caption;
zmienne[5]:=Label23.Caption;
zmienne[6]:=Label24.Caption;
zmienne[7]:=Label22.Caption;
zmienne[8]:=Label25.Caption;

assignfile(plik, 'plik.tab);
rewrite(plik);
BlockWrite(plik, zmienne, Length(zmienne));
closefile(plik);

Odczyt

assignfile(plik, 'plik.tab');
if FileExists('plik.tab') then
Reset(plik, 1)
else
rewrite(plik);
BlockRead(plik, zmienne, SizeOf(zmienne));
closefile(plik); 

To nie dziala

0

a beda "entery" w tych stringach?
jesli nie to mozesz zapisac zwyczajnie jako kolejne linie uzywajac TStringList.

0

Nie, nie bedzie

0

Przepraszam, że zapytam: Co robisz za program? To jest zaliczenie, czy jakaś 'prywatna inicjatywa'?
Pytam dlatego, że np. takie coś jest przerażające:

zmienne[0]:=Label17.Caption;
zmienne[1]:=Label18.Caption;
zmienne[2]:=Label19.Caption;
zmienne[3]:=Label20.Caption;
zmienne[4]:=Label21.Caption;
zmienne[5]:=Label23.Caption;
zmienne[6]:=Label24.Caption;
zmienne[7]:=Label22.Caption;
zmienne[8]:=Label25.Caption;>

I zawsze to można rozwiązać inaczej... A co za tym idzie także i zapis i odczyt...

0

Zapisuj do pliku tekstowego

var
  plik:TextFile;
  i:Integer;
//zapis do pliku
  AssignFile(plik,'plik.tab');  
  Rewrite(plik);
  for i:=Low(zmienne) to High(zmienne) do WriteLn(plik,zmienne[i]);
//możesz też zapisywać np WriteLn(plik,Label17.Caption); itd.
  CloseFile(plik);
//odczyt pliku
  AssignFile(plik,'plik.tab');  
  Reset(plik);
  for i:=Low(zmienne) to High(zmienne) do ReadLn(plik,zmienne[i]);
  CloseFile(plik);
//i następnie
  Label17.Caption:=zmienne[0];
//... itd.

Ponadto polecam poczytać o FindComponent i zoptymalizować cały kod.

0

Dziekuje . Tak jestem poczatkujacy, jest to program dla mnie ale robie go na miare swoich mozliwosci ;) dzieki. Jesli jeszcze bede mial jakis problem zapytam.

Jest to program ktory pobiera dane z suwakow, zapisuje do zmiennych wyswietla te wartosci w labelach i ma je ZAPISAC by mozna bylo je odczytac po uruchomieniu programu. Taki zapis stanu programu

Edit:

Dzieki @pelsta ! O to mi chodzilo ;)
Ale chce sie rozwijac wiec powiedzcie mi jak moge zoptymalizowac program (jakimi komponentami), o czym poczytac i jesli mozecie napiszcie jak zapisac i odczytac do pliku przy pomocy TStringList bo dalej nie wiem.

0

Wiesz, każdy początkujący musi się nauczyć jeszcze jednej ważnej rzeczy szukania i podglądania czyjegoś kodu. Czasem ktoś rzuci hasło i wtedy wystaczy znaleźć wszystko na ten temat... Czasem ktoś coś napisał i można zgapić... Na razie poszukałem za ciebie i znalazłem dość proste przykłady:

Przykład użycia TStringList

Przykład użycia FindComponent

Jeśłi chodzi o samo delphi, to tutaj masz wszystko co potrzeba: http://4programmers.net/Delphi/Kompendium

A teraz pomyśl jak to by można było połączyć z twoim programikiem... A dopiero w razie problemów pisz :)

0

jesli chcesz zapisywac stan suwakow (czyli liczby) i inne rzeczy to nie konwertuj wszysktiego na tekst bo to bez sensu... tak sie nie robi.
od tego jest rejestr lub pliki ini (jesli juz koniecznie dane maja byc w pliku).
bedzie to znacznie szybsze, prostsze i wygodniejsze, bardziej odporne na bledy itd...
o plikach ini i rejestrze znajdziesz w internecie niejeden artykul.

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