Entwickler-Ecke

Sonstiges (Delphi) - Datei Suche - Dateiverwaltung


jUli@ - Do 30.01.03 12:12
Titel: Datei Suche - Dateiverwaltung
hi ho,.. könntet ihr mir vielleicht mal helfen? und zwar funktioniert meine suche nicht, da komme immer "ungültiger integer wert", außerdem möchte ich eigentlich das man mehr suchgegriffe hat und nicht nur halternummer, wie mache ich das??? könntet ihr mir vielleicht helfen?:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
procedure TfrmHalter.sbSucheClick(Sender: TObject);
VAR suchbegriff : integer;
    gefunden : boolean;
begin
  gefunden := false;
  IF fehleingabenPruefen
     Then Begin
        suchbegriff := StrToInt(edtSuche.text);
        dateiOffen:=dateiOeffnen('Halter.dat');
        While (NOT Eof(halterdatei)) AND (gefunden=false) DO
        Begin
          FHalter := datensatzLesen;
          IF FHalter.HalterNR = suchbegriff
             Then Begin
                With FHalter Do
                Begin
                   HalterNR:= StrToInt(frmHalter.edtHalternummer.text);
                   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;//With
                aktSatzPos := aktuelleDatensatzpositionErmitteln;
                gefunden := true;
                eingabemaskeEntsichern('Halter');
                dateiGeschlossen := dateiSchliessen('Halter.dat');
               End;
         END;//While
      End;//Then
  IF NOT gefunden
     Then Begin
       dateiOffen:=dateiOeffnen('Halter.dat');
       ShowMessage('Die Halternummer existiert nicht!');
       edtSuche.text :='';
       End;
       dateiGeschlossen := dateiSchliessen('Halter.dat');
end;


vielen Lieben dank

Julia :D

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


Mari - Di 04.02.03 18:31

Warum ist deine Variable "Suchbegriff" ein Integer und kein String?
Wenn es ausschließlich zur Suche nach Zahlen dient, dann musst du folgendes beachten:

-Der Inhalt des Edit muss eine Zahl sein und kein Wort sein
-Im Edit muss eine nach Integer konvertierbare Zahl stehen, also z.B. nicht 1,5
-Das Edit darf nicht leer sein

Wenn diese Bedingungen nicht erfüllt sind dann tritt der Fehler auf.

Ich hoffe ich konnte dir helfen,

Mari


jUli@ - Mi 05.02.03 10:00

Hallo,...

ich habe es mit einer anderen Suche mit String versucht aber das funktioniert auch nicht!

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
procedure TfrmFahrzeug.sbSucheClick(Sender: TObject);
VAR suchbegriff : string;
    gefunden : boolean;
begin
  gefunden := false;
  IF fehleingabenPruefen
     Then Begin
        suchbegriff := edtSuche.text;
        dateiOffen:=dateiOeffnen('Fahrzeug.dat');
        While (NOT Eof(kfzdatei)) AND (gefunden=false) DO
        Begin
          KFZ := datensatzLesen;
          IF (IntToStr(KFZ.KFZHalterNR) = suchbegriff) OR (KFz.FahrgestellNr = suchbegriff)
             Then Begin
                With KFZ Do
                Begin
                   KFZHalterNr:= StrToInt(frmFahrzeug.edtHalternummer.text);
                   FahrgestellNr:= frmFahrzeug.edtFahrgestellnummer.text;
                   FahrzeugbriefNr:=frmFahrzeug.edtFahrzeugbrief.text;
                   Kennzeichen:=frmFahrzeug.edtKennzeichen.text;
                   KennzeichenArt:=frmFahrzeug.cbKennzeichen.text;
                   Typ:=frmFahrzeug.cbTyp.text;
                   Modell:=frmFahrzeug.edtModell.text;
                   Farbe:=frmFahrzeug.edtFarbe.text;
                   Baujahr:=frmFahrzeug.meBaujahr.Text;
                   Zusatz:=frmFahrzeug.memZusatz.text;
                   Anmeldedatum:=StrToDate(frmFahrzeug.meAnmeldedatum.Text);
                   Abmeldedatum:=StrToDate(frmFahrzeug.meAbmeldedatum.Text);
                End;//With
                aktSatzPos:=aktuelleDatensatzpositionErmitteln;
                gefunden:=true;
                dateiGeschlossen := dateiSchliessen('Fahrzeug');
               End;
         END;//While
      End;//Then
  IF NOT gefunden
     Then Begin
       dateiOffen:=dateiOeffnen('Fahrzeug.dat');
       ShowMessage('Dies Fahrzeug existiert nicht!');
       edtSuche.text :='';
       End;
  dateiGeschlossen := dateiSchliessen('Fahrzeug');
end;


Moderiert von user profile iconTino: Code-Tags hinzugefügt.


Mari - Mi 05.02.03 18:00

:cry:

Wie lautet denn der komplette Text deiner Fehlermeldung?


Aya - Mi 05.02.03 20:28

Hi,

versuch es mal so:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
procedure TfrmFahrzeug.sbSucheClick(Sender: TObject); 
VAR suchbegriff : string; 
    gefunden : boolean; 
begin 
  gefunden := false; 
  IF fehleingabenPruefen 
     Then Begin 
        suchbegriff := edtSuche.text; 
        dateiOffen:=dateiOeffnen('Fahrzeug.dat'); 
        While (NOT Eof(kfzdatei)) AND (gefunden=false) DO 
        Begin 
          KFZ := datensatzLesen; 
          IF (IntToStr(KFZ.KFZHalterNR) = suchbegriff) OR (KFz.FahrgestellNr = suchbegriff) 
             Then Begin 
                With KFZ Do 
                Begin 
                   KFZHalterNr:= StrToIntDef(frmFahrzeug.edtHalternummer.text,0);  // Wenn in dem Edit keine gültige IntegerZahl ist, wird 0 genommen.
                   FahrgestellNr:= frmFahrzeug.edtFahrgestellnummer.text; 
                   FahrzeugbriefNr:=frmFahrzeug.edtFahrzeugbrief.text; 
                   Kennzeichen:=frmFahrzeug.edtKennzeichen.text; 
                   KennzeichenArt:=frmFahrzeug.cbKennzeichen.text; 
                   Typ:=frmFahrzeug.cbTyp.text; 
                   Modell:=frmFahrzeug.edtModell.text; 
                   Farbe:=frmFahrzeug.edtFarbe.text; 
                   Baujahr:=frmFahrzeug.meBaujahr.Text; 
                   Zusatz:=frmFahrzeug.memZusatz.text; 
                   Anmeldedatum:=StrToDate(frmFahrzeug.meAnmeldedatum.Text); 
                   Abmeldedatum:=StrToDate(frmFahrzeug.meAbmeldedatum.Text); 
                End;//With 
                aktSatzPos:=aktuelleDatensatzpositionErmitteln; 
                gefunden:=true; 
                dateiGeschlossen := dateiSchliessen('Fahrzeug'); 
               End; 
         END;//While 
      End;//Then 
  IF NOT gefunden 
     Then Begin 
       dateiOffen:=dateiOeffnen('Fahrzeug.dat'); 
       ShowMessage('Dies Fahrzeug existiert nicht!'); 
       edtSuche.text :=''; 
       End; 
  dateiGeschlossen := dateiSchliessen('Fahrzeug'); 
end;


Ich hab nur aus deinem StrToInt() ein StrToIntDef() gemacht.
Dadurch wird, sofern der String nicht zu einem Integer umgewandelt werden kann die 0 genommen.

Du könntest aber auch jede x-beliebige zahl dafür nehmen.

Au'revoir,
Aya~


jUli@ - Do 06.02.03 15:15

hi,... danke jetzt bekomme ich das mit ungültigen integerwert nicht mehr... aber... irgendwie mag ders mit dem datum nicht.....