Cynkiel Opublikowano 31 Grudnia 2003 Zgłoś Opublikowano 31 Grudnia 2003 Otóż jak w temacie pytanie jest zapewne trywialnie proste, otóż mam do zrobienia projekt (baze danych). Mam problem ze wszystkim (niedawno zaczelem sie w to bawic). Więc chcialbym stworzyc sobie jakis tam plik rekordowy który bedzie przechowywał dane np. studentów, a dodawac ich, wyswietlac i edytowac chcialbym w okienkach edit.. podobnie z wyszukiwaniem. Wiem ze do moze byc dla niektórych naprawde banalne i moze nie chciec sie wam pisac, ale jak mozecie to piliss :wink: A moje pytania sa nastepujace: 1. Jak ztworzyc plik rekordowy 2. Jak zapisywac z poszczególnych editów poszczególne dane, a nastepnie w nowej formie pokazac je tak jak powinny czyli np. imie w imieniu itd. Dzieki bardzo Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 1 Stycznia 2004 Zgłoś Opublikowano 1 Stycznia 2004 1. Jak ztworzyc plik rekordowy type osoba = record imie : string[20]; nazw : string[30]; wiek : byte; end;var plik : file of osoba;Zapis: os.imie := 'imie';os.nazw := 'nazwisko';os.wiek := 21;write(plik, os); 2. Jak zapisywac z poszczególnych editów poszczególne dane, a nastepnie w nowej formie pokazac je tak jak powinny czyli np. imie w imieniu itd.A moglbys jeszcze raz normalnie wytlumaczyc o co Ci chodzi? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Cynkiel Opublikowano 2 Stycznia 2004 Zgłoś Opublikowano 2 Stycznia 2004 A moglbys jeszcze raz normalnie wytlumaczyc o co Ci chodzi?Mam forme bazy, prezentuje sie ona tak: I tutaj mają być wyświetlane osoby których szukam, np. wpisuje sobie w szukaniu Kowalski i obok go widze (nie dodałem jeszcze przycisku szukaj ale luz). Natomiast dodawanie do bazy wygląda tak: No i oczywiście jak sie domyślasz to co tutaj wpisze chcię zby było dodane do np. baza.dat, a wyswietlone w/g szukania w pierszym oknie. --> Z góry dzieki za podpowiedz Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 3 Stycznia 2004 Zgłoś Opublikowano 3 Stycznia 2004 No i oczywiście jak sie domyślasz to co tutaj wpisze chcię zby było dodane do np. baza.dat, a wyswietlone w/g szukania w pierszym oknie.No rozumiem, ale z czym konkretnie masz problem? Z zapisem wpisanych w okienko danych do pliku? Z odczytem ich i wpisaniem do okienek? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Cynkiel Opublikowano 3 Stycznia 2004 Zgłoś Opublikowano 3 Stycznia 2004 No i oczywiście jak sie domyślasz to co tutaj wpisze chcię zby było dodane do np. baza.dat, a wyswietlone w/g szukania w pierszym oknie.No rozumiem, ale z czym konkretnie masz problem? Z zapisem wpisanych w okienko danych do pliku? Z odczytem ich i wpisaniem do okienek?Tak dokładnie o to chodzi. No a potem z szukaniem, ale najpierw chciałbym mieć chociaż coś zrobione :wink: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 3 Stycznia 2004 Zgłoś Opublikowano 3 Stycznia 2004 Przykladowy zapis rekordu do pliku juz podalem, kazde kolejne wywolanie write(plik, rekord) powoduje dopisanie rekordu do pliku, mozesz na taki plik "patrzec" w pewnym sensie jak na tablice rekordow (bo sa to rekordy poukladane jeden obok drugiego). Odczyt jest podobny (na przykladzie powyzszych deklaracji): var os : osoba;...read(plik, os);Teraz w rekodzie 'os' masz dane z odczytanego rekordu z pliku. Kazde kolejne wywolanie read z tymi parametrami powoduje wczytanie nastepnego rekordu z pliku (w ten sposob w petli wczytujesz calosc). Zapis danych z okienka do pliku? Najpierw trzeba wypelnic rekord danymi z Edit'ow a potem to zapisac, wiec dla powyzszego przykladu w procedurze OnClick jakiegos przycisku mialbys mniej wiecej cos takiego: var os : osoba; plik : file of osoba; os.imie := EditImie.Text;os.nazw := EditNazw.Text;os.wiek := StrToInt(EditWiek.Text); { nie pamietam czy dokladnie tak sie nazywala f. konwertujaca string na liczbe, ale nie o to tu chodzi...}assign(plik, 'jakas_nazwa');append(plik);write(plik, os);close(plik); Odwrotnie z pliku do okienka juz sobie chyba przez analogie poradzisz? A co do szukania to najprosciej w petli wczytywac rekord po rekordzie i sprawdzac czy ten wlasnie wczytany ma takie nazwisko jak chcemy, jesli ma to wpisanie jego danych do okienka i break. edit: byl maly blad ;] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Cynkiel Opublikowano 3 Stycznia 2004 Zgłoś Opublikowano 3 Stycznia 2004 Dzieki stary bede próbowal, a o wynikach dam znac :wink: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Cynkiel Opublikowano 3 Stycznia 2004 Zgłoś Opublikowano 3 Stycznia 2004 Chyba jestem na dobrej drodze :D Otóż tworze plik, dodaje do niego rekord, czytam z niego rekord tylko, że każdy kolejny dodany rekord nadpisuje sie na ten wczesniej zapisany. A append(plik); nie może chyba być ((incompatible types)zrobilem reset ale nadpisuje pliki) Tak wiec mój problem polega teraz nie na tworzeniu a na dodawaniu, zebym mógł dodac wiecej niz jeden rekord nie wiem moze jakos +1 ale jak to zapisac? :? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 3 Stycznia 2004 Zgłoś Opublikowano 3 Stycznia 2004 No tak.. append dziala tylko dla plikow tekstowych, teraz mam dostep do helpa to mozemy poszalec ;) uzyj wiec: reset(plik);Seek(plik, FileSize(plik));To przesunie "wskaznik plikowy" na sam koniec i zapisanie czegos (rekordu) doda go na koniec, czyli to co chcesz. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Cynkiel Opublikowano 3 Stycznia 2004 Zgłoś Opublikowano 3 Stycznia 2004 "seek" działa, chyba zaczynam coraz wiecej qmac z tego wszystkiego. Jezeli chce wyswietlic ktoregos z zapisanych ziomków w pliku, to musze go przeczytac tak jak wczesniej napisales przez read(plik) i jezeli znajdzie to co zapisalem w edicie szukania to wtedy ma wyswielic write(plik) i wyszczególnionych editach tak :?: Jezeli tak to zorzumienie tego nie jest takie złe (gorzej moze byc w praktyce), oki teraz spadam próbowac jak do jutra nie zrobie to sie odezwe :wink: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 3 Stycznia 2004 Zgłoś Opublikowano 3 Stycznia 2004 Jezeli chce wyswietlic ktoregos z zapisanych ziomków w pliku, to musze go przeczytac tak jak wczesniej napisales przez read(plik) i jezeli znajdzie to co zapisalem w edicie szukania to wtedy ma wyswielic write(plik) i wyszczególnionych editach tak :?:Do momentu znalezienia dobrze, ale po co Ci write?? Jak juz znajdzie ten rekord to poprostu wyswietlasz go w sposob podany wyzej w editach (kazde pole rekordu w swoim) i przerywasz petle czytajaca z pliku (no chyba ze kilka osob ma takie same nazwisko, ale wtedy juz musialbys zdecydowac co w takim przyapdku robic, czy wsywietlac wszystkie znalezione czy, prosciej, tylko pierwszy znaleziony). Powodzenia. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Cynkiel Opublikowano 4 Stycznia 2004 Zgłoś Opublikowano 4 Stycznia 2004 No to już sie odzywam, jednak nie jest to tak trywialne jak sie wydawalo na poczatku. Z czytaniem nie mam problemu ale jednego wpisu, natomiast jak mam ich więcej no to musz ich szukać i tutaj zaczynają sie schody... plssss ja musze to miec zrobione na 10.I.2k4 :roll: A jaeszcze tyle rzeczy zostało edycja, usówanie i wyświetlanie w lisboxie ... ah strach myśleć. Dobrze że chociaż ktoś jest na forum kto mnie rozumie :lol: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
uff...AR Opublikowano 4 Stycznia 2004 Zgłoś Opublikowano 4 Stycznia 2004 moze lepiej sprobowac pobawic sie TTable i komponentow stworzonych do tego typu zabaw, a nie robic to recznie? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 4 Stycznia 2004 Zgłoś Opublikowano 4 Stycznia 2004 natomiast jak mam ich więcej no to musz ich szukać i tutaj zaczynają sie schody...No przeciez wyszukiwanie jest liniowe, czyli czytasz jeden po drugim i sprawdzasz... while not eof(plik) do begin read(plik, os); if os.nazw = 'szukane_nazwisko' then begin EditImie.Text := os.imie; ... break; end;end; plssss ja musze to miec zrobione na 10.I.2k4 :roll:No to juz nie moja wina, ze sie tak pozno obudziles... przyznaj sie kiedy Wam to zadali? :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Cynkiel Opublikowano 4 Stycznia 2004 Zgłoś Opublikowano 4 Stycznia 2004 No to juz nie moja wina, ze sie tak pozno obudziles... przyznaj sie kiedy Wam to zadali? No więc zadali przed świętami, czyli rok temu :oops: ... Oczywiście szukanie działa, za co wielkie dzięki. Rozumiem, że usówanie bedzie wyglądało tak jak z szukaniem, tzn najpierw szukam, jak znajde chce usónąć, tylko jak sie zapisuje usunięcie z rekordu :?: Sorry za te ciągłe pytania ale z tego co piszesz to @ll qmam i weim o so chodzi :wink: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 5 Stycznia 2004 Zgłoś Opublikowano 5 Stycznia 2004 Rozumiem, że usówanie bedzie wyglądało tak jak z szukaniem, tzn najpierw szukam, jak znajde chce usónąć, tylko jak sie zapisuje usunięcie z rekordu :?:Po pierwsze to usUwanie ;p a po drugie to juz nie takie hop siup, w wersji prostszej robisz tak, ze usuniety rekord zapisujesz rekordem zerowym (wszystkie skladowe na 0, stringi na '' etc.) i potem taki przy szukaniu/wyswietlaniu pomijasz. Druga, trudniejsza, wersja to odczytac ostatni rekord z pliku, wsadzic go na miejsce tego usuwanego i usunac ten ostatni (funkcja truncate). Sorry za te ciągłe pytania ale z tego co piszesz to @ll qmam i weim o so chodzi :wink:Jak na moje kiepskie zdolnosci pedagogiczne to jestem w szoku ;) Wykaz tylko troche wiecej swojej inicjatywy, bo mi juz semestr leci i mam swoje rzeczy do roboty, a te stawiam wyzej niz Twoje ;P Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Cynkiel Opublikowano 9 Stycznia 2004 Zgłoś Opublikowano 9 Stycznia 2004 Nie mogę tego zrobić, mam to na jutro, a jak stosuje truncate to obcina mi całość, nie mam pojęcia jak to zrobić, jak pomożecie ok, jak nie to jakos bede sie tłumaczył :cry: Ale jeszcze bede dzisiaj próbował :idea: // dodano Co w tym jest źle ? Pod dane w rekordzie który znajduje, chce podstawic '' czyli nic i zapisac czemu nie chce działac ? var plik: file of osoba; os: osoba; szuk:string; begin assignfile(plik, 'baza.dat'); reset(plik); szuk:=edit11.Text; while not eof(plik) do begin read(plik, os); if os.nazwisko = szuk then begin os.imie:=''; os.nazwisko:=''; os.ulica:=''; os.ulnr:=''; os.miasto:=''; os.miastokod:=''; os.telkier:=''; os.teldom:=''; os.telkom:=''; os.mail:=''; write(plik,os); end; closefile(plik); end; \\dodano Już mam :!: :!: :!: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...