klar kein problem:
//////////////////////////////////Ändern////////////////////////////////////////
{ Zuweisung von Werten aus dem StringGrid an Textfelder}
procedure Wertuebernahme;
var CurrentRow:integer;
begin
CurrentRow := frmHalter.sgHalter.Row;
frmHalter.edtHalternummer.text:= frmHalter.sgHalter.Cells[0,CurrentRow];
frmHalter.edtName.text:= frmHalter.sgHalter.Cells[1,CurrentRow];
frmHalter.edtVorname.text:=frmHalter.sgHalter.Cells[2,CurrentRow];
frmHalter.edtStrasse.text:=frmHalter.sgHalter.Cells[3,CurrentRow];
frmHalter.edtPLZ.text:=frmHalter.sgHalter.Cells[4,CurrentRow];
frmHalter.edtOrt.text:=frmHalter.sgHalter.Cells[5,CurrentRow];
frmHalter.edtgebOrt.text:=frmHalter.sgHalter.Cells[6,CurrentRow];
frmHalter.edtTelefon.text:=frmHalter.sgHalter.Cells[7,CurrentRow];
frmHalter.meGeburtsdatum.text:=frmHalter.sgHalter.Cells[8,CurrentRow];
end;// Wertuebernahme
function fehlereingabePruefen:Boolean;
var fehleintrag:Integer;
begin
fehleintrag:=0;
if frmHalter.edtSuche.Text='' then inc(fehleintrag);
case fehleintrag of
1: begin
showMessage('Bitte geben Sie in das Suchefeld einen Begriff ein!');
result:=false;
end;
0: result:=true;
end;//Case
end; //fehlereingabePruefen
procedure TfrmHalter.sbAendernClick(Sender: TObject);
begin
eingabemaskeSichern('Halter');
FarbeWeiss('Halter');
Wertuebernahme;
sbSpeichern.Visible:=false;
sbSpeichernA.Visible:=true;
sbSpeichernA.Top:=416;
end;
procedure TfrmHalter.sbSpeichernAClick(Sender: TObject);
begin
IF MessageDlg('Möchten Sie die geänderten Halterdaten speichern?', mtConfirmation, [mbYes, mbNo], 0) = mrYes
Then Begin
dateiOffen := dateiOeffnen('Halter.dat');
with FHalter do
begin
HalterNR:= HalterNrErmitteln;
frmHalter.edtHalternummer.text:=InTtoStr(HalterNr);
Name:= frmHalter.edtName.text;
Vorname:=frmHalter.edtVorname.text;
Strasse:=frmHalter.edtStrasse.text;
PLZ:=frmHalter.edtPLZ.text;
Ort:=frmHalter.edtOrt.text;
gebOrt:=frmHalter.edtgebOrt.text;
Telefon:=frmHalter.edtTelefon.text;
GebDatum:=StrToDate(frmHalter.meGeburtsdatum.Text);
end;//whith
datensatzUeberschreiben(FHalter,aktsatzPos);
dateiGeschlossen := dateiSchliessen;
End;
eingabemaskeSichern('Halter');
eingabeLoeschen('Halter');
end;
//////////////////////////////////Löschen////////////////////////////////////////
procedure TfrmHalter.sbLoeschenClick(Sender: TObject);
var
//row:longInt;
i:integer;
begin
try
FHalter.HalterNR:=StrToInt(sgHalter.cells[0,sgHalter.row]);
except
ShowMessage('Bitte markieren Sie einen gültigen Eintrag!');
exit;
end;
if MessageDlgPos('Möchten Sie die Halterdaten löschen?', mtConfirmation,
[mbYes, mbNo],0,200,100)= mrYes
then begin
if MessageDlgPos('Sind Sie sich sicher???', mtConfirmation,
[mbYes, mbNo],0,200,100)= mrYes
then begin
datensatzLoeschen(StrToInt(edtHalternummer.text),'Halter.dat');
ShowMessage('Die Halterdaten wurden gelöscht!');
for i:=0 to 3 do
sgHalter.Cells[i, sgHalter.row]:='';
end;
end;
end;
procedure TfrmHalter.sbSucheClick(Sender: TObject);
var
suchbegriff: String;
zeile, spalte:integer;
gefunden:boolean;
begin
zeile:=1;
spalte:=0;
gefunden:=false;
if edtSuche.Text=''
then ShowMessage('Bitte geben Sie einen Suchbegriff ein!')
else begin
suchbegriff:=edtSuche.Text;
dateiOffen:=dateiOeffnen('Halter.dat');
while (NOT Eof (halterdatei)) and (gefunden=false) DO
begin
FHalter:=datensatzlesen;
if FHalter.name=suchbegriff {or
IntToStr(FHalter.HalterNR)=suchbegriff or
FHalter.vorname=suchbegriff or
FHalter.strasse=suchbegriff or
IntToStr(FHalter.PLZ=suchbegriff or
FHalter.ort=Suchbegriff or
FHalter.gebOrt=suchbegriff or
FHalter.telefon=suchbegriff or
FHalter.gebDatum=suchbegriff }
then begin
if sgHalter.Rowcount<(zeile+2)
then sgHalter.Rowcount:=sgHalter.RowCount+1;
with FHalter do
begin
sgHalter.cells[spalte, zeile]:= IntToStr(HalterNr);
sgHalter.cells[spalte+1, zeile]:= Name;
sgHalter.cells[spalte+2, zeile]:= Vorname;
sgHalter.cells[spalte+3, zeile]:= Strasse;
sgHalter.cells[spalte+4, zeile]:= PLZ;
sgHalter.cells[spalte+5, zeile]:= Ort;
sgHalter.cells[spalte+6, zeile]:= gebOrt;
sgHalter.cells[spalte+7, zeile]:= Telefon;
sgHalter.cells[spalte+8, zeile]:= DateToStr(gebDatum);
end; //with
Inc(zeile);
gefunden:=true;
end;
end;//While
if not gefunden
then begin
ShowMessage('Dieser Halter exsistiert nicht bitte überprüfen Sie Ihre Eingabe');
edtSuche.Text:='';
dateiGeschlossen:=dateiSchliessen;
end;
end;
end;
aus meiner ADT:
unit ADT_Halter;
interface
// uses
TYPE
tHalter = RECORD
HalterNR: Integer;
name : String[25];
vorname : String[20];
strasse : String[30];
PLZ : String[5];
ort : String[20];
gebOrt : String[20];
telefon : String[25];
gebDatum: TDateTime;
END;//tHalter
VAR halterdatei : File of tHalter;
....
FUNCTION dateiOeffnen(dateiname:String):boolean;
BEGIN
{$I-}
AssignFile(Halterdatei,'Halter.dat');
Reset(Halterdatei);
IF IORESULT <> 0
THEN Rewrite (Halterdatei);
{ AssignFile(tmpHalterdatei,'Halter.tmp');
Reset(tmpHalterdatei);
IF IORESULT <> 0
THEN Rewrite (tmpHalterdatei); }
{$I+}
END; //dateiOeffnen
FUNCTION dateiSchliessen:boolean;
BEGIN
TRY
Close(halterdatei);
result := true;
EXCEPT
result := false;
END;
END; //dateiSchliessen
FUNCTION dateigroesseErmitteln:integer;
BEGIN
result := FileSize(halterdatei);
END; //dateigroesseErmitteln
FUNCTION aktuelleDatensatzpositionErmitteln:integer;
BEGIN
result := FilePos(halterdatei);
END;
PROCEDURE datensatzHinzufuegen(datensatz:tHalter);
VAR letzterDatensatz : integer;
BEGIN
letzterDatensatz := dateigroesseErmitteln;
Seek(halterdatei,letzterDatensatz);
Write(halterdatei,datensatz);
END; // datensatzHinzufuegen
PROCEDURE datensatzUeberschreiben(datensatz:tHalter;satzposition:integer);
BEGIN
Seek(halterdatei,satzposition-1);
Write(halterdatei,datensatz);
END; // datensatzUeberschreiben
FUNCTION datensatzLesen:tHalter;
VAR datensatz : tHalter;
BEGIN
Read(halterdatei,datensatz);
result := datensatz;
END; //datensatzLesen
FUNCTION datensatzLoeschen(HalterNr:integer; dateiname:string):boolean;
var zwischendatei:File of tHalter;
Halter:tHalter;
dateiOffen, dateiGeschlossen:boolean;
begin
assign(zwischendatei,'zwischen.dat');
rewrite(zwischendatei);
dateiOffen:=dateiOeffnen(dateiname);
while not Eof(Halterdatei) do
begin
read(Halterdatei,Halter);
if Halter.HalterNr<> HalterNr
then begin
write(zwischendatei, Halter);
end;
end;//while
dateiGeschlossen:=dateiSchliessen;
Close(zwischendatei);
Erase(Halterdatei);
Rename(zwischendatei,dateiname);
result:=true;
end;//datensatzLoeschen