Witajcie! Wybaczcie, że znów zadaję pewnie proste pytania, ale przy kompilacji pewnego programu wywala mi błędy.... program wygląda tak:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, DBCtrls, CheckLst, Grids, DBGrids, Menus,
DB, DBTables, ExtCtrls;
type
kontakt = record
imie:string;
nick:string;
email:string;
numergg:string;
end;
type
TMainForm = class(TForm)
pole: TRichEdit;
pimie: TEdit;
pnick: TEdit;
pemail: TEdit;
pggnumber: TEdit;
Dodaj: TButton;
generuj: TButton;
sortuj: TButton;
danebox: TGroupBox;
imie: TLabel;
nick: TLabel;
email: TLabel;
Label1: TLabel;
pusun: TLabeledEdit;
usun: TButton;
MainMenu1: TMainMenu;
mkontakty: TMenuItem;
mOprbaz: TMenuItem;
mWyjcie: TMenuItem;
mZapiszBaz: TMenuItem;
mWczytajBaz: TMenuItem;
mN2: TMenuItem;
mN3: TMenuItem;
listbox: TListBox;
procedure DodajClick(Sender: TObject);
procedure generujClick(Sender: TObject);
procedure sortujClick(Sender: TObject);
procedure usunClick(Sender: TObject);
procedure odswiezanie;
procedure mOprbazClick(Sender: TObject);
procedure mWyjcieClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type TKontakty = array of kontakt;
var
MainForm: TMainForm;
Tablica : TKontakty;
indeks:integer;
procedure Sort(var A: array of kontakt);
function wielkalit(wyraz:string): string;
function szukaj(poszukiwany:string):integer;
implementation
{$R *.dfm}
function Concat(S1, S2: TKontakty): TKontakty;overload; //nie ma takiej konieczności, ale na wszelki wypadek jakby się chciało dopisać inne wersje.
begin
SetLength(Result, Length(S1)+Length(S2));
Move(S1[0], Result[0], Length(S1)*SizeOf(Kontakt));
Move(S2[0], Result[Length(S1)], Length(S2)*SizeOf(Kontakt));
end;
procedure Delete(var S: string; index, Count:Integer);overload;
begin
System.Delete(S, Index, Count);
end;
procedure Delete(var S: TKontakty; index, Count:Integer);overload;
begin
S := Concat(Copy(S, 0, index), Copy(S, index+Count, Length(S)-index-Count));
end;
procedure TMainForm.odswiezanie;
var i:integer;
begin
listbox.Clear;
for i:=0 to length(tablica) do
begin
listbox.AddItem(tablica[i].imie,listbox);
end;
end;
procedure TMainForm.DodajClick(Sender: TObject);
begin
if pimie.Text='' then showmessage('Nie podałeś Imienia!');
if pnick.Text='' then showmessage('Nie podałeś Nicka!');
if pemail.Text='' then showmessage('Nie podałeś adresu E-mail!');
if ((pimie.Text<>'') and (pnick.Text<>'') and (pemail.Text<>'')) then
begin
pimie.Text:=wielkalit(pimie.Text);
SetLength(tablica,High(tablica)+2);
tablica[High(tablica)].imie:=pimie.Text;
tablica[High(tablica)].nick:=pnick.Text;
tablica[High(tablica)].email:=pemail.Text;
tablica[High(tablica)].numergg:=pggnumber.Text;
showmessage('dodano ' + pimie.Text);
pimie.Clear;pnick.Clear;pemail.Clear;pggnumber.Clear;
end;
TMainForm.odswiezanie;
end;
procedure TMainForm.generujClick(Sender: TObject);
var i:integer;
begin
pole.Text:='';
for i:=0 to Length(tablica)-1 do
begin
if tablica[1].imie='' then break;
pole.Text:=pole.Text + '<font color="#D0CC98">Imię: ' + tablica[i].imie + ' Nick: ' + tablica[i].nick + '<br>' + #13 + 'E-mail: <a href="mailto:' + tablica[i].email + '">' + tablica[i].email + '</a><br>' + #13 + 'Numer gg: ' + tablica[i].numergg + '</font><br><br>' + #13 + #13;
end;
end;
procedure Sort(var A: array of kontakt);
procedure QuickSort(var A: array of kontakt; iLo, iHi: Integer);
var
Lo, Hi: Integer;
Mid, T: kontakt;
begin
Lo := iLo;
Hi := iHi;
Mid := A[(Lo + Hi) div 2];
repeat
while AnsiCompareStr(A[Lo].Imie, Mid.Imie) < 0 do Inc(Lo);
while AnsiCompareStr(A[Hi].Imie, Mid.Imie) > 0 do Dec(Hi);
if Lo <= Hi then
begin
T := A[Lo];
A[Lo] := A[Hi];
A[Hi] := T;
Inc(Lo);
Dec(Hi);
end;
until Lo > Hi;
if Hi > iLo then QuickSort(A, iLo, Hi);
if Lo < iHi then QuickSort(A, Lo, iHi);
end;
begin
QuickSort(A, Low(A), High(A));
end;
function wielkalit(wyraz:string): string;
var
pierwsza:string;
koncowka:string;
begin
pierwsza:=wyraz;
koncowka:=wyraz;
delete(pierwsza,2,length(pierwsza));
StrUpper(pchar(pierwsza));
delete(koncowka,1,1);
wyraz:=pierwsza+koncowka;
result:=wyraz;
end;
procedure TMainForm.sortujClick(Sender: TObject);
begin
Sort(tablica);
end;
function szukaj(poszukiwany:string):integer;
var i:integer;
begin
for i:=0 to length(tablica) do
begin
if tablica[i].imie=poszukiwany then indeks:=i;
end;
result:=indeks;
end;
procedure TMainForm.usunClick(Sender: TObject);
var cousun:integer;
begin
if pusun.Text<>'' then
begin
cousun:=szukaj(pusun.Text);
Delete(tablica, cousun,3);
end;
MainForm.odswiezanie;
end;
procedure TMainForm.mOprbazClick(Sender: TObject);
begin
setlength(tablica,0);
pole.Clear;
listbox.Clear;
pimie.Clear;
pnick.Clear;
pemail.Clear;
pggnumber.Clear;
end;
procedure TMainForm.mWyjcieClick(Sender: TObject);
begin
close;
end;
end.
Jeżeli będzie taka potrzeba mogę udostępnić cały projekt (z formą)... Z błędów to przede wszystkim fakt, że przy usuwaniu (wpisywaniu w EditTekście imienia i klikaniu na usun) wywala cały program... A wcześneij to jeszcze mi na każej procedurze MainForm.odswiez przy kompilowaniu wywala.... Byłbym dozgonnie wdzięczny za jakakolwiek pomoc...