Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - schreiben in ein File-Of
D. Annies - Mo 30.01.12 08:44
Titel: schreiben in ein File-Of
Hi, Delpher,
ein kleines Prob, weil ich es schon sehr lange nicht mehr gemacht habe:
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
mandras - 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.
Delete - 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 - Mo 30.01.12 11:03
Scusi,
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.
mandras - Mo 30.01.12 11:09
D. Annies hat folgendes geschrieben : |
Es ist ein eConvertError: "" ist kein gültiger Gleitkommawert. |
Ein leerer String kann nicht in ein Float konvertiert werden. Also StrToFloatDef (xxx, 0) verwenden.
D. Annies - Mo 30.01.12 11:16
Hi, Mandras, es war noch etwas anderes:
Die Abbruchbedingung war falsch: stringgrid1.rowcount-1;
Gruß, Detlef
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!