Odczyt z pliku po włączeniu programu

0

Tak jak w temacie, potrzebuję zrobić żeby po otworzeniu mojego programu ładowała się zawartość pliku .txt do labela/memo czy czegokolwiek gdzie można przechować tekst. Chciałbym też wykonywać operacje na tym pliku. Załóżmy że w pliku ble.txt jest liczba 120. Odpalam program i w labelu pojawia mi się liczba 120. Po wpisaniu w jakiś textbox np. liczby 20 i kliknięciu buttona "dodaj", liczba 120 zmieniałaby się na 140 i została od razu zapisana do ble.txt jako 140. Miałem już taki program w javie ale teraz potrzebuję to zrobić w delphi a nie za bardzo wiem jak... Mogę użyć OpenDialog do otwierania pliku "ble.txt" ale chciałbym aby to się robiło automatycznie a nie poprzez wybranie ścieżki tego pliku. To samo z SaveDialog. Ważne jest też żeby dało się operować na tym jak na zmiennej, abym mógł dodawać/odejmować.

Proszę o pomoc.

2

Pliki w Turbo Pascalu

Co do przetwarzania pliku przy otwarciu programu umieść to w zdarzeniu OnCreate Formy.

3
//Deklaracja
var FS:TFileStream;
var S:String;

//Odczyt
FS:=TFileStream.Create('ble.txt',fmOpenRead);
SetLength(S,FS.Size);
FS.Read(S[1],FS.Size);
FS.Free;

//Zapis
FS:=TFileStream.Create('ble.txt',fmCreate);
FS.Write(S[1],Length(S));
FS.Free;
0

Znalazłem trochę inną metodę ale nie mogę jej do końca ogarnąć. Otóż mam na formie labela i 3 przyciski. 1- stan, 2- dodaj, 3-odejmij. Gdy kliknę stan chciałbym żeby w labelu pokazywała mi się wartość z pliku txt ale gdy próbuje to robić tym sposobem to się zeruje :

 
var 
TF: TextFile;
stan: Integer;

begin
  AssignFile(TF, 'stan.txt');
  ReWrite(TF);
  Write(TF, stan);
  Label1.Caption:=IntToStr(stan);
  CloseFile(TF);
end;

Załóżmy że w pliku mam liczbę 151, odpalam program, klikam stan i zamiast w labelu pokazać się 151 pokazuje się 0 ( domyślny tekst dla labela ).
Co zrobić?! Tylko nie podawajcie mi takich jakichś zaawansowanych kodów bo ja nic z nich nie rozumiem przez co nie wiem jak je użyć... Proszę tylko o modyfikację mojego kodu.

0

Poczytaj jakieś kursy, bo programowanie to nie zgadywanie. Trzeba myśleć i wiedzieć co się robi. A co do problemu z kodem, to poczytaj co robią takie procedury jak Rewrite oraz Write w przypadku plików. Chociaż - według mnie to już same ich nazwy. powinny Tobie sugerować, jakie błędy popełniasz.

0

"Jakiś" kurs już przerobiłem : http://www.delphi7.yoyo.pl/kurs/lekcja9.html . Ale jak widać jest to za mało. Jakbyś mógł polecić mi jakiś inny to bardzo bym prosił ( może być po angielsku ). A co do Rewrite to wiem że czyści on zawartość pliku, a Write dopisuje(?) do pliku jakieś znaki. Ale nijak nie umiem tego zastosować w praktyce...

1

Kompendium Delphi dostępne na 4p, powinno być ok. Przede wszystkim to jeżeli już upierasz się na metody bez użycia VCL (na przykład klasa TStringList ani funkcji WinAPI jak ReadFile do odczytu danych plików, to powinieneś zrobić tak. Przypisać zmienną plikową (to akurat robisz ok). Następnie przy dyrektywie kompilatora ({$I-}) wykonać Reset(ZmiennaPlikowa);, co ustawi znacznik na początku istniejącego pliku. Ponownie wywołać dyrektywę kompilatora, ale już {$I+}. Teraz sprawdzasz czy funkcja IOResult zwróciła zero, wtedy wiadomo że odczyt się powiódl. Jeżeli tak, to funkcją Read albo lepiej Readln jedną linię z pliku do zmiennej typu string albo typu integer, ale lepiej te pierwsze. Następnie przy użyciu procedury Val sprawdzacz czy zmienna typu string zawiera na pewno prawidłową wartośc będącą liczbą całkowitą. Dzięki procedurze Val masz w zmiennej podanej jako jej drugi parametr właściwą liczbę i teraz możes z nią robić, to czego potrzebujesz.

A i zamiast Val można oczywiście skorzystać z funkcji TryIntToStr z modułu SysUtils, ale widzę że konstrukcji typowo VCL'owych z niewiadomych względów się wystrzegasz, a mogly by one Tobie ułatwić życie.

Przede wszystkim powinieneś zamiast od razu "smarować" na forum (ja rozumiem - dział Newbie i początątki, ale od myślenia masz swój TBrain, nie masz go to moze go zainstaluj ;)) powinieneś kombinować najpierw samodzielnie, nie poddając się od razu, a w razie problemów, czytać dokumentacje, googlować za opisem użycia elementów języka i dopiero po wielu próbach samodzielnej kombinacji pytać na forum jeżeli coś nie działa mimo sprawdzenia wielu rozwiązan. Więcej się nauczysz i w przyszłości wszystko będzie szło Tobie, o wiele sprawniej. Tak uważam.

0

Przeczytam może jeszcze to kompedium, bo na razie mało co rozumiem z tego co napisałeś.
Aha i chciałbym tylko sprostować. Nie poleciałem od razu na forum jak mi nie działał powyższy kod. Siedzę nad tym problemem już ok 15h (wczoraj z 7 i dzisiaj od 10). Próbowałem już setki możliwości ale chyba jednak metoda prób i błędów jest syzyfową pracą gdy nie zna się podstaw... W każdym razie dzięki, może kiedyś jak poznam podstawy to zrozumiem to co napisałeś :) .

0

Spoko, starałem się napisać najbardziej zrozumiale co powinieneś zrobić. Zapomniałem tylko o enterach - dla @madmike'a, co już poprawiłem :> A gotowych kodów nawet tak krótkich i do napsiania od ręki raczej już tutaj nie podaje. Ponieważ dalej nic byś się nie nauczył, a miałbyś mnóstwo kolejnych pytań o podstawy.

Po prostu zamiast pisać kod linijka po linijce opisałem krok po kroku co należy wstawić w kolejne linijki. Zaś o zastosowaniu instrukcji if czy działaniu wymienionych powyżej funkcji oraz procedur spokojnie wyczytasz po wygooglowaniu tych słów na przykład z dopiskiem delphi.

W zasadzie nie ma sensu brać się za pisanie czegokolwiek po omacku, nie znając podstaw składni języka i jego zasad. No może ja sam robię wyjątek i męcze ludzi w dziale Newbie o pomoc w uzupełnieniu kodu assemblerowego do TSR'a cracka dla starej gry "Polanie". No ale coż, kto dzisiaj dobrze pamięta czasy świetności TASM'a :) A i niby skąd ja mający tylko styczność z assemblerem jedynie przy "poprawianiu" kodu przy debuggowaniu pod Windows, miałbym wiedzieć, że jeden z moich problemów leżał w zwiększenie wartości po instrukcji mov z rejestrem dx przed zastosowaniem przerwania 27h. Tablica z opisami przerwań do znalezienia w google jest imo trochę "bałaganiarska". Poza tym pomagając mnóstwie - często leni z niechęcią do samodzielnego kombinowania, w często na prawdę banalnych "problemach" - raz na jakiś czas chyba też mogę zadawać pytanie o niszowego jak na obecne czasy asm'a i technikę TSR'ów, których nikt już nie pisze, bo wiadomo że DOS'a wyparły Windows'y. To tak przy okazji dodałem na koniec, może trochę aby się wybielić ;)

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