Witam. Od kilku dni piszę pewien program, który ma być taką mini bazą danych z możliwością dopisywania, edytowania i szukania elementów oraz zapisywania i wczytywanie jej z pliku (a no i jeszcze sortowania). Do tej pory nie udało mi się wiele napisać - ogólnie rzecz biorąc program generuje listę jednokierunkową (albo stos, sam w zasadzie nie wiem :( ) i daje możliwość dopisywania do niej elementów. Problem w tym, że podczas dopisywania 5/6 elementu wyskakuje taki oto zacny błąd : http://imageshack.us/f/40/eaccess.jpg/ . Gdy kliknie się run, element zostaje dodany do listy, a po ponownej próbie dodania kolejnego znowu wyskakuje ten błąd i tak w kółko.
Oto kod programu:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
Button1: TButton;
Tabela: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure wypelnij_tabele(Sender: TObject);
private
{ Private declarations }
public
procedure dodaj_elem(imie, nazwisko, telefon, pesel : string);
procedure wyswietl;
end;
type
wskaznik = ^element;
element = record
imie : string[10];
nazwisko : string[22];
telefon : string[12];
pesel : string[15];
next : wskaznik;
end;
var
first, prev, last : wskaznik;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure utworz_liste;
begin
first:=nil;
end;
procedure TForm1.dodaj_elem(imie, nazwisko, telefon, pesel : string);
var nowy : wskaznik;
begin
new(Nowy);
nowy^.imie := imie;
nowy^.nazwisko := nazwisko;
nowy^.telefon := telefon;
nowy^.pesel := pesel;
if first = nil then
begin
first := nowy;
last := first
end
else
last^.Next := nowy;
last := nowy;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.wypelnij_tabele(Sender: TObject);
begin
Tabela.cells[0,0] := 'Imie';
Tabela.cells[1,0] := 'Nazwisko';
Tabela.cells[2,0] := 'Telefon';
Tabela.cells[3,0] := 'Pesel';
end;
procedure TForm1.wyswietl;
var tmp : wskaznik;
var i : integer ;
begin
i := 1;
tabela.RowCount := 2;
tmp := first;
while tmp <> nil do
begin
tabela.cells[0,i] := tmp^.imie;
tabela.cells[1,i] := tmp^.nazwisko;
tabela.cells[2,i] := tmp^.telefon;
tabela.cells[3,i] := tmp^.pesel;
tmp := tmp^.next;
i:=i+1;
tabela.RowCount := tabela.RowCount + 1;
end;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit1;
type
TForm2 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label3: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
begin
Form1.dodaj_elem(edit1.Text, edit2.Text, edit3.Text, edit4.Text);
end;
Form1.wyswietl;
end;
end.
Z góry uprzedzam że nie jestem najlepszy w delphi.
Pozdrawiam.