Entwickler-Ecke
Dateizugriff - Dateiverwaltung - Datei löschen und ändern
jUli@ - Fr 20.12.02 12:30
Titel: Dateiverwaltung - Datei löschen und ändern
Hallo
ich brauche da mal euche hilfe, und zwar bin ich dabei eine Verwaltung auf Dateibasis zu schreiben und nun habe ich es soweit das es keine probleme gibt beim complieren. aber wenn ich dann in der anwendung bin und auf (beim ändern) auf speichern klicke kommt diese fehlermeldung:
E/A Fehler 131
und bei löschen kommt dies:
kein gültiger integerwert
wäre klasse wenn ihr mir helfen könntet!
LG Julia
DeCodeGuru - Fr 20.12.02 12:32
Es wäre besser, wenn du uns etwas Quellcode geben könntest. Dann dürften wir dir besser helfen können.
jUli@ - Fr 20.12.02 16:30
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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!