TSDFDataset ftString wird zu kurz gespeichert
-
- Beiträge: 9
- Registriert: Mi 24. Jun 2015, 21:12
- OS, Lazarus, FPC: Mint Linux 17.3 | noch Win10 | L 1.4.4 | FPC 2.6.4
- CPU-Target: 64Bit
TSDFDataset ftString wird zu kurz gespeichert
Hallo,
ich habe ein Problem mit langen Strings (80 Zeichen) in Kombination mit TSDFDataset.
Schon bei der Eingabe in ein DBTextfeld wird die Eingabe auf 49 Zeichen begrenzt. Warum? Kann mir jemand dabei helfen?
ich habe ein Problem mit langen Strings (80 Zeichen) in Kombination mit TSDFDataset.
Schon bei der Eingabe in ein DBTextfeld wird die Eingabe auf 49 Zeichen begrenzt. Warum? Kann mir jemand dabei helfen?
Code: Alles auswählen
for i:=1 to n do
SummeUnsinn := SummeUnsinn + Unsinn[i];
-
- Beiträge: 61
- Registriert: Mo 27. Aug 2012, 15:43
Re: TSDFDataset ftString wird zu kurz gespeichert
BrunoT hat geschrieben:Schon bei der Eingabe in ein DBTextfeld wird die Eingabe auf 49 Zeichen begrenzt. Warum? Kann mir jemand dabei helfen?
Wie ist denn das zugehörige Feld in der Datenbak definiert?
Kann das überhaupt Strings mit >= 50 Zeichen aufnehmen?
Re: TSDFDataset ftString wird zu kurz gespeichert
Das ist eine sehr eigenwillige Komponente...Ich kriege per Code nicht einmal eine leere SDF-Tabelle erstellt. Und wenn ich die FieldDefs im ObjectInspektor eintrage, kann ich die Feldgröße nicht mehr ändern, sie bleibt hartnäckig auf dem zuerst eingegebenen Wert, auch wenn ich die SDFDatei lösche. Das hat sich offenbar seit langem niemand mehr angesehen...
Hat jemand bessere Erfahrungen? Wenn ja, wie wird die Komponente angewendet? (Bitte Schritt für Schritt, für Dumme wie mich)
Hat jemand bessere Erfahrungen? Wenn ja, wie wird die Komponente angewendet? (Bitte Schritt für Schritt, für Dumme wie mich)
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: TSDFDataset ftString wird zu kurz gespeichert
Keine Ahnung ob das weiter hilft:
http://forum.lazarus.freepascal.org/ind ... pic=3289.0
http://forum.lazarus.freepascal.org/ind ... pic=3289.0
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
Re: TSDFDataset ftString wird zu kurz gespeichert
Nein, kannte ich schon, die verlinkte Seite existiert nicht mehr (und wird auch in der WayBack Machine nicht gefunden - von wegen "Das Internet vergisst nichts"...)
-
- Beiträge: 470
- Registriert: Do 15. Nov 2007, 16:58
- OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
- CPU-Target: i386, x64
- Wohnort: Gera
Re: TSDFDataset ftString wird zu kurz gespeichert
Hi,
ich glaube ich hab was gefunden. http://fpc-devel.freepascal.narkive.com/BYDaIFLy/tsdfdataset-does-not-work-with-records-larger-then-255-chars
In der ersten Antwort ist von den Schemas die Rede.
Hab gerade getestet, mit folgendem Code:
Wichtig ist hier FirstLineAsSchema auf False und das Schema anzulegen.
ich glaube ich hab was gefunden. http://fpc-devel.freepascal.narkive.com/BYDaIFLy/tsdfdataset-does-not-work-with-records-larger-then-255-chars
In der ersten Antwort ist von den Schemas die Rede.
Possibly because FieldDefs[<n>].Size is too small. Did you setup
TSdfDataset.Schema according to your needs? The format is
<fieldname>=<fieldsize> AFAIK, MAXSTRLEN is a default value only.
Hab gerade getestet, mit folgendem Code:
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
SdfDataSet1.FileName := ExtractFilePath(ParamStr(0)) + 'test.csv';
SdfDataSet1.FieldDefs.Add('id', ftInteger);
SdfDataSet1.Schema.Add('ID = 8');
SdfDataSet1.FieldDefs.Add('text', ftMemo);
SdfDataSet1.Schema.Add('TEXT = 300');
SdfDataSet1.FileMustExist := False;
SdfDataset1.FirstLineAsSchema := False;
SdfDataSet1.Open;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SdfDataSet1.Append;
SdfDataSet1.FieldByName('id').AsInteger := 99;
SdfDataSet1.FieldByName('text').AsUTF8String :=
QuotedStr('ein neuer furchtbar langer langer text mit ganz vielen neuen zeichen und was weiß ich nicht alles');
SdfDataSet1.Post;
end;
Wichtig ist hier FirstLineAsSchema auf False und das Schema anzulegen.
mfg Ingo
Re: TSDFDataset ftString wird zu kurz gespeichert
Richtig, mit Schema ist die Komponente wesentlich zahmer... Das Schema hat auch Priorität vor den Einstellungen von FieldDefs. Evtl werden diese sogar komplett ignoriert, denn wenn ich die Schema-Einträge lösche, sind die Feldnamen verloren, obwohl sie noch in den FieldDefs stehen. Vielleicht wäre die Komponente einfach zu verstehen, wenn die FieldDefs nicht published wären.
-
- Beiträge: 9
- Registriert: Mi 24. Jun 2015, 21:12
- OS, Lazarus, FPC: Mint Linux 17.3 | noch Win10 | L 1.4.4 | FPC 2.6.4
- CPU-Target: 64Bit
Re: TSDFDataset ftString wird zu kurz gespeichert
Hallo,
Danke für die Antworten.
Ich habe schon mitbekommen, dass die Datensatzlänge beim anlegen einer leeren DB auf 255 begrenzt wird.
Sind aber schon lange Datensätze in der Datei nimmt TSDFDataset den längsten Record als Maß aller Dinge.
Ich werde gleich mal mit dem Schema experimentieren. Eventuell löst das meine Probleme.
Danke für die Hilfe
Danke für die Antworten.
Ich habe schon mitbekommen, dass die Datensatzlänge beim anlegen einer leeren DB auf 255 begrenzt wird.
Sind aber schon lange Datensätze in der Datei nimmt TSDFDataset den längsten Record als Maß aller Dinge.
Ich werde gleich mal mit dem Schema experimentieren. Eventuell löst das meine Probleme.
Danke für die Hilfe
Code: Alles auswählen
for i:=1 to n do
SummeUnsinn := SummeUnsinn + Unsinn[i];