1 / 13

Wykład 7

Wykład 7. instrukcja with przykład tablicy rekordów okna dialogowe pliki - wstęp. Instrukcja wiążąca - with. dotyczy tylko zmiennych rekordowych (obiektowych). upraszcza zapis !!. opis : with lista_zmiennych_rekordowych do instrukcje. najczęściej begin . . . end.

iokina
Download Presentation

Wykład 7

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wykład 7 • instrukcja with • przykład tablicy rekordów • okna dialogowe • pliki - wstęp

  2. Instrukcja wiążąca - with • dotyczy tylko zmiennych rekordowych (obiektowych) • upraszcza zapis !! • opis: withlista_zmiennych_rekordowych doinstrukcje najczęściej begin . . . end można tu używać nazw pól bez specyfikowania zmiennej rekordowej przykład: student.nazw :=’Kowalski’; student.imie[1] := ’Jan’; student.data_ur.rok := 1988; student.stypendium := 420.00; with student do begin nazw :=’Kowalski’; imie[1] := ’Jan’; data_ur.rok := 1988; stypendium := 420,00; end;

  3. To samo dotyczy składowych (właściwości , metody) obiektów przykład: StringGrid1.Rows[1].CommaText := ' , "12,5", -8, "100,25", +4'; StringGrid1.Rows[2].CommaText := ' , "21,21", -10, 321, 4, "2,5", "‑56,99" '; StringGrid1.Cols[0].CommaText := ', suma, średnia, większe'; for k := 1 to10do StringGrid1.Cells[k, 0] := IntToStr(k); with StringGrid1 do begin Rows[1].CommaText := ' , "12,5", -8, "100,25", +4'; Rows[2].CommaText := ' , "21,21", -10, 321, 4, "2,5", "‑56,99" '; Cols[0].CommaText := ', suma, średnia, większe'; for k := 1 to10do Cells[k, 0] := IntToStr(k); end; związanie z StringGrid1

  4. Przykład - w polu StringGrid dane o osobach - wprowadzamy do wektora rekordów - porządkujemy - wynik w drugim StringGrid

  5. Kod programu: Deklaracje globalne (dla wszystkich procedur): const max = 10; // ograniczenie liczności danych type stud = record nazw,imie: string[10]; styp: real; end; var lba_danych: 1..max; x: array[1..max] of stud;

  6. Operacje początkowe: procedure TForm1.FormCreate(Sender: TObject); var k: integer; begin with StringGrid1 do begin Options := Options + [goEditing]; ColCount := 4; RowCount := max; Rows[0].CommaText := 'L.p.," nazwisko"," imię",stypendium'; Rows[1].CommaText := '1,Nowak,Jan,132,00'; Rows[2].CommaText := '2,Bęben,Teresa,399,50'; Rows[3].CommaText := '3,Zając,Mateusz,212,00'; Rows[4].CommaText := '4,Kowalski,Adam,502,10'; end; lba_danych:=4; with StringGrid2 do begin ColCount := 4; RowCount := max; Rows[0].CommaText := 'L.p.," nazwisko"," imię",stypendium'; for k := 1 to max - 1 do Cells[0, k] := IntToStr(k); end; end;

  7. Kopiowanie do wektora rekordów: procedure TForm1.zapamietajClick(Sender: TObject); var k, m: 1.. max; begin for k := 1 to max - 1 do with x[k],StringGrid1 do begin nazw := Cells[1, k]; if nazw = '' then break; imie := Cells[2, k]; styp := strtofloat(Cells[3, k]); lba_danych := k; end; end;

  8. Porządkowanie wg stypendium: procedure TForm1.wg_stypClick(Sender: TObject); var k, m: 1.. max; pom: stud; begin for k := 1 to lba_danych - 1 do // porządkowanie – bąbelkowe skr. for m := 1 to lba_danych - k do if x[m].styp > x[m+1].styp then begin pom := x[m]; x[m] := x[m+1]; x[m+1] := pom end; for k := 1 to lba_danych do // pokazanie wyniku with StringGrid2 do begin Cells[1, k] := x[k].nazw; Cells[2, k] := x[k].imie; Cells[3, k] := FloatToStr(x[k].styp); end; end;

  9. Porządkowanie wg nazwisk: procedure TForm1.wg_nazwiskClick(Sender: TObject); var k, m: 1.. max; pom: stud; begin for k := 1 to lba_danych - 1 do // porządkowanie – nieoptymalne for m := k to lba_danych do if x[m].nazw < x[k].nazw then begin pom := x[m]; x[m] := x[k]; x[k] := pom end; for k := 1 to lba_danych do with StringGrid2 do begin Cells[1, k] := x[k].nazw; Cells[2, k] := x[k].imie; Cells[3, k] := FloatToStr(x[k].styp); end; end;

  10. Okienka wyboru pliku do otwarcia lub zapisuOpenDialog, SaveDialog,FontDialog, ColorDialog... • karta Dialogs biblioteki komponentów VCL • standardowe okna dialogu - wybór pliku do otwarcia lub zapisu • komponenty niewidzialne, - pojawiają się jako osobne okna, po wykonaniu metody - funkcji execute, - przyjmującej wartość typu logicznego: • - true, gdy użytkownik kliknął na zakończenie przycisk Otwórzlub Zapisz • - false, gdy użyto przycisku Anuluj. • właściwości • title: string - treść tytułu w pasku tytułowym okna • filter: string - wzorzec przeglądanych plików, np. ’*.txt’ • np. 'Delphi(*.pas, *.dpr)|*.pas;*.dpr' • fileName: string - dysk + ścieżka + nazwa wybranego pliku • metoda – Execute :funkcja typu Boolean

  11. Schemat obsługi dialogu otwarcia pliku: wartość true po otwarciu dialogu • if OpenDialog1.Execute then • begin • //operacje, np. • Edit1.Text:= Opendialog1.fileName; • // i inne – skojarzenie, otwarcie, zapis, zamknięcie • end;

  12. Obsługa plików Pojęcie i istota stosowania • składowe takiego samegodowolnego typu - prostego, strukturalnego - nie pliki • dostępsekwencyjny - operacje np.: czytaj pierwszy | czytaj następny zapisz na początku | zapisz na końcu • brak selektora (adresacji) • rozmiar dynamiczny • istnieje wewnętrzny wskaźnik elementu bieżącego, automatycznie modyfikowany po każdej operacji odczyt | zapis • fizycznie - w pamięci zewnętrznej: dysk, dyskietka, CD-ROM, - znakowe urządzenia wej/wyj: (monitor), drukarka

  13. Uwagi: • Po otwarciu do odczytu wskaźnik ustawia się na początku pliku, każdy odczyt lub zapis przesuwa wskaźnik o jedną pozycję. • Otwarcie nowego (nieistniejącego) pliku powoduje utworzenie pustego pliku, jeśli plik istniał jego zawartość zostaje usunięta, • Można sprawdzić czy wskaźnik jest na końcu pliku • Można przewinąć wskaźnik na początek – jeśli wtedy stwierdzimy, że jesteśmy na końcu pliku to plik jest pusty, • Po przeczytaniu elementu następuje przesunięciewskaźnika do następnego elementu, • Zapis nowego elementu zalecany tylko na końcu pliku (w środku można ale zmienimy (nadpiszemy) wartość elementu). • Dopisanie „w środku” pliku wykonuje się przez etapowe przepisywanie do innego pliku.

More Related