Autor Beitrag
D. Annies
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mo 30.01.12 08:44 
Hi, Delpher,

ein kleines Prob, weil ich es schon sehr lange nicht mehr gemacht habe:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Assignfile(afile, 'a1.sta'); Rewrite(afile); j := 0;
  repeat
    j := j+1;
    datensatz.satzart := stringgrid1.cells[0,j];
    datensatz.kstb    := stringgrid1.Cells[1,j];
    datensatz.ksta    := stringgrid1.Cells[2,j];
    datensatz.kstbez  := stringgrid1.Cells[3,j];
    datensatz.ikosten := strtofloat(stringgrid1.Cells[4,j]);
    datensatz.skosten := strtofloat(stringgrid1.Cells[5,j]);
    datensatz.datum   := stringgrid1.Cells[6,j];
    datensatz.sonst   := stringgrid1.Cells[7,j];
    write(afile, datensatz);
  until j = stringgrid1.rowcount-1;
  closefile(afile);
  showmessage('Es wurden ' + inttostr(j) + ' Datensätze geschrieben');


Der Datensatz wird nicht geschrieben, es liegt an den beiden Reals ikosten und skosten. Was ist da los?
Danke, Detlef

_________________
ut vires desint, tamen est laudanda voluntas
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 434
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Mo 30.01.12 09:59 
Du hast nicht geschrieben was genau passiert, ich vermute aufs erste daß die Zellen beim strtofloat leer sind und deshalb strtofloat nicht funktioniert. Sollte dies der Fall sein versuche es mit strtofloatdef, da kannst Du einen Defaultwert angeben der verwendet wird wenn sich die Zelle nicht in einen Float umwandeln läßz, z.B. weil sie leer ist.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 30.01.12 10:22 
Es wäre auch keine schlechte Idee uns mitzuteilen was das für Datentypen sind in dem Record. Strings kann man so nämlich nicht schreiben, da es nur Zeiger auf einen Speicherbereich sind.
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mo 30.01.12 11:03 
Scusi,

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Type  Satz  =  Record
                 satzart  : String [3];
                 kstb     : String [2];
                 ksta     : String [3];
                 kstbez   : String [21];
                 ikosten  : Real;
                 skosten  : Real;
                 datum    : String [6];
                 sonst    : String [45]
               End;


Es ist ein eConvertError: "" ist kein gültiger Gleitkommawert.

_________________
ut vires desint, tamen est laudanda voluntas
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 434
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Mo 30.01.12 11:09 
user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:


Es ist ein eConvertError: "" ist kein gültiger Gleitkommawert.


Ein leerer String kann nicht in ein Float konvertiert werden. Also StrToFloatDef (xxx, 0) verwenden.

Für diesen Beitrag haben gedankt: D. Annies
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mo 30.01.12 11:16 
Hi, Mandras, es war noch etwas anderes:
Die Abbruchbedingung war falsch: stringgrid1.rowcount-1;
Gruß, Detlef

_________________
ut vires desint, tamen est laudanda voluntas