Autor Beitrag
jUli@
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Fr 20.12.02 11:30 
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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1333
Erhaltene Danke: 1

Arch Linux
Eclipse
BeitragVerfasst: Fr 20.12.02 11:32 
Es wäre besser, wenn du uns etwas Quellcode geben könntest. Dann dürften wir dir besser helfen können.

_________________
Viele Grüße
Jakob
jUli@ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Fr 20.12.02 15: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