ďťż

Ładny brzuch

Witam. Napisałem taki program "Książka adresowa".
Oto kod:

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls; //strtuktura rekordu type TAdressRec=record imie : String[20]; nazwisko : String [20]; Add1 : String [40]; Add2 : String [40]; miejscowosc : String[30]; kod_pocztowy : String[10]; telefon : String[20]; Fax : String[20]; end; {direction Type} type TRecMove=(recFirst,recLast,recNext,recPrev); type TForm1 = class(TForm) btnFirst: TButton; btnPrev: TButton; btnNext: TButton; btnLast: TButton; btnNew: TButton; btnUpdate: TButton; BtnInsert: TButton; btnDelete: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Bevel1: TBevel; StatusBar1: TStatusBar; Edit9: TEdit; btnFind: TButton; btnFindNext: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure btnNewClick(Sender: TObject); procedure btnUpdateClick(Sender: TObject); procedure btnFirstClick(Sender: TObject); procedure btnLastClick(Sender: TObject); procedure btnNextClick(Sender: TObject); procedure btnPrevClick(Sender: TObject); procedure btnFindClick(Sender: TObject); procedure btnFindNextClick(Sender: TObject); procedure BtnInsertClick(Sender: TObject); private procedure SetRecVals; procedure ReadRec; procedure EnableButtons(EnableIt:Boolean); procedure MoveToRec(Direction:TRecMove); procedure LocateRec(Value:String;FromBOF:Boolean); procedure CreateNewRec; procedure InsertRec; procedure UpdateRec; procedure DeleteRec; public NewRec:Boolean; end; var Form1: TForm1; AddrFile : File of TAdressRec; AddrRec : TAdressRec; const MAXRECS = 2000; //max ilosc rekordow implementation procedure TForm1.FormCreate(Sender: TObject); begin AssignFile(AddrFile,'Adresy.DAT'); if FileExists('Adresy.DAT') then begin Reset(AddrFile); if (FileSize(AddrFile) > 0) then begin Seek(AddrFile, 0); ReadRec; NewRec:=False; end; end else begin Rewrite(AddrFile); NewRec:=True; end; btnNew.Enabled:=True; btnInsert.Enabled:=False; btnUpdate.Caption:='&Popraw'; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin CloseFile(AddrFile); end; //===============procedury obslugi=============== procedure TForm1.SetRecVals; begin with AddrRec do begin imie:=Edit1.Text; nazwisko:=Edit2.Text; Add1:= Edit3.Text; Add2:=Edit4.Text; miejscowosc:=Edit5.Text; kod_pocztowy:=Edit7.Text; telefon:=Edit8.Text; Fax:=Edit9.Text; end; procedure TForm1.ReadRec; begin Read(AddrFile, AddrRec); with AddrRec do begin Edit1.Text:=imie; Edit2.Text:=nazwisko; Edit3.Text:=Add1; Edit4.Text:=Add2; Edit5.Text:=miejscowosc; Edit7.Text:=kod_pocztowy; Edit8.Text:=telefon; Edit9.Text:=Fax; end; Seek(AddrFile,FilePost(AddrFile) - 1 ); end; procedure TForm1.EnableButtons(EnableIt : Boolean); begin btnNew.Enabled:=EnableIt; btnFirst.Enabled:-EnableIt; btnPrev.Enabled:=EnableIt; btnNext.Enabled:=EnableIt; btnLast.Enabled:=EnableIt; //odblokowanie przycisku wstaw tylko wtedy, gdy wcisnieto 'nowy' btnInsert.Enabled:=NOT EnableIt; end; //===============procedury manipulacji rekordami=============== //tworzenie nowego rekordu procedure TForm1.CreateNewRec; var i:integer; begin ifNewRec then LockWindowUpdate(Handle); //czyszczenie wartosci pol edycyjnych for i:=0 to ComponentCount - 1 do if (Component[i] is TEdit) then TEdit(components[i]).Clear; LockWindowUpdate(0); NewRec:=True; EnableButtons(False); btnUpdate.Caption:='&Zapisz'; end; procedure TForm1.InsertRec; var curPos, numRecs, i: Integer; RecBuf:Array[0..MAXRECS] of TAddressRec; begin //odczytaj pola do tymczasowej struktury rekordu SetRecVals; //pobierz aktualne pozycje pliku curPos:=FilePos(AddrFile); //pobierz maksymalna liczbe rekordow do zapisania nunmRecs:=FileSize(AddrFile); if FilePos(AddrFile) >0 then begin i :=0; Seek(addrFile, 0): while FilePos(AddrFile,RecBuf[i]); Inc (i); end; end; //zapisz rekord do wstawienia do tablicy RecBuf[curPos]:= AddrRec; i:=curPos + 1; while NOT EOF(AddrFile) do begin read(AddrFile,RecBuf[i]); Inc (i); end; i:=0; Seek(AddrFile, 0); while (i<=numRecs) do begin Write(AddrFile,RecBuf[i]); inc (i); end; Seek(AddrFile,curPos); ReadRec; btnUpdate.Caption:='&Popraw'; EnableButtons(True); end; procedure TForm1.UpdateRec; var curPos:Integer; begin curPos:=FilePos(AddrFile); SetRecVals; if NewRec then begin Seek(AddrFile,FileSize(AddrFile)); curPos:=FileSize(AddrFile) + 1; end; write(AddrFile, AddrRec); if (FileSize(AddrFile)>0 then begin Seek(AddrFile, curPos); NewRec :=False; end; EnableButtons(True); btnUpdate.Caption:='&Popraw'; end; procedure TForm1.DeleteRec; var curPos, numRecs, i: Integer; RecBuf : Array[0..MAXRECS] of TAdressRec; begin if MessageDlg('Czy chcesz usunac ten rekord?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Exit; if NewRec the begin ReadRec; NewRec:=False; EnableButtons(True); Exit; end; curPos :=FilePos(AddrFile); numRecs :=FileSize(AddrFile) - curPos - 1; if(FilePos(AddrFile,FilePos(AddrFile) - 1))then begin Seek(AddrFile,FilePos(AddrFile) + 1); i:=0; while NOT EOF(AddrFile) do begin Read(AddrFile,RecBuf[i]); inc (i); end; Seek(AddrFile, curPos); Truncate(AddrFile); for i:= 0 to numRecs -1 do Write(AddrFile,RecBuf[i]); end else begin Truncate(AddrFile); Dec(curPos); end; Seek(AddrFile, curPos); ReadRec; end; procedure TForm1.btnDeleteClick(Sender:TObject); begin DeleteRec; end; //============================== procedure TForm1.MoveToRec(Direction : TRecMove); var pos:Integer; begin Enable Buttons(True); pos:=FilePos(AddrFile); if (FileSize(AddrFile)=0) then Exit; case Direction of recFirst :pos:=0; recLast :pos:=FileSize(AddrFile) - 1; recNext :if (FilePos(AddrFile)<(FileSize(AddrFile) - 1)) then pos:=FilePos(AddrFile) + 1 else Exit; recPrev :if(FilePos(AddrFile)>0) then pos:=FilePos(AddrFile - 1 else Exit; end; Seek (AddrFile,pos); ReadRec; NewRec:=False; end; procedure TForm1.LocateTec(Value:String; FromBoF : Boolean); var curPos, SearchPos : Integer; Found : Boolean; begin curPos :=FilePos(AddrFile); if FromBOF then SearchPos:=0 else SearchPos:=curPos +1; Found:=False; while (SearchPos <=(FileSize(AddrFile) - 1)) AND (NOT Found) do begin Seek(AddrFile,SearchPos); Read(AddrFile,AddrRec); if(AddrRec.nazwisko = Value) then begin Found:=True; MessageBeep(MB_OK); Seek(AddrFile,SearchPos); ReadRec; end; Inc(SearchPos) end; if NOT found then Show Message('Nie znaleziono rekordu w pliku!!!'); end; //przciski //tworzenie nowego rekordu procedure TForm1.btnNewClick(Sender: TObject); begin CreateNewRec; end; procedure TForm1.btnUpdateClick(Sender: TObject); begin UpdateRec; end; procedure TForm1.btnFirstClick(Sender: TObject); begin MoveToRec(recFirst); end; procedure TForm1.btnLastClick(Sender: TObject); begin MoveToRec(recLast); end; procedure TForm1.btnNextClick(Sender: TObject); begin MoveToRec(recNext); end; procedure TForm1.btnPrevClick(Sender: TObject); begin MoveToRec(recPrev); end; procedure TForm1.btnFindClick(Sender: TObject); begin if (Edit6.Text<>") then begin if NewRec then btnUpdateClick(Self); LocateRec(Edit6.Text, True); end; end; procedure TForm1.btnFindNextClick(Sender: TObject); begin LocateRec(Edit6.Text, False); end; procedure TForm1.BtnInsertClick(Sender: TObject); begin InsertRec; end; end.

Problem polega na tym, że gdy chcę uruchomić program wyskakuje mi błąd Statement expected but 'PROCEDURE" found i przenosi mi kursor w to miejsce: procedure TForm1.ReadRec; [147 linia]. Wcześniej program też miał kilka błędów, ale je poprawiłem.

Formatka

EDIT: Przez pomyłke dodałem drugi temat, prosze go usunąć. Dziękuję.

CODEBOX! - m
Użytkownik migajek edytował ten post 31 marzec 2006, 21:04


Tuż nad tym wskazanym miejscem zgubiłeś jednego end'a.
Popraw to i powinno działać :) a przynajmniej błędu nie będzie.
Pozdrawiam.

Dziękuję za szybką odpowiedź, wyeliminowałem wszystkie błędy (przynajmniej te, które mi wskazał kompilator), ale teraz gdy chcę uruchomić program wyświetla mi się takie okienko: klik

No jak sam komunikat wskazuje w programie zgubiło się gdzieś TForm1; a przynajmniej jego zasób. Skompiluj ponownie [opcja rebuild gdzieś tam jest], a jak to nie pomoże to ja się już wycofuję - nie jestem kompetentny w sprawach Delphi i trudno mi jest zdiagnozować ewentualną przyczynę.
Pozdrawiam.



dodaj {$R *.dfm} ponizej implementation

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •