AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Paradox spezielle Datentypen laden

Ein Thema von UntoterGeist · begonnen am 17. Feb 2021 · letzter Beitrag vom 19. Feb 2021
 
Incocnito

Registriert seit: 28. Nov 2016
229 Beiträge
 
#4

AW: Paradox spezielle Datentypen laden

  Alt 19. Feb 2021, 07:33
Und so geht das nicht?
Delphi-Quellcode:
  SetLength(Bytes, ParadoxTable.FieldByName(ParadoxTable.Fields[i].FullName).Size);
  ParadoxTable.FieldByName(ParadoxTable.Fields[i].FullName).GetData(Bytes);
  Stream := TMemoryStream.Create();
  Stream2 := TStringStream.Create([]); // evtl muss hier noch das Encoding mit angegeben werden
  //Stream2 := TStringStream.Create('', TEncoding.UTF8, False);
  try
    Stream.Write(Bytes, Length(Bytes));
    Stream.Position := 0;
    //Stream2.Position := 0; // evtl?
    Stream2.LoadFromStream(Stream);
    //Stream.Position := 0; evtl?
    //Stream2.Position := 0; // evtl?
    Stream2.DataString := Stream2.DataString + ';'; // Hinweis A
    Stream2.SaveToFile(ExportFile);
  finally
    FreeAndNil(Stream);
    FreeAndNil(Stream2);
  end;
Ich denke, wenn du Bytes ausliest und nur in eine Datei schreibst müsste das Encoding egal sein.
Nur wenn du mit DataString tatsächlich das ganze in Delphi irgendwo verwenden willst,
müsstest du auch mit dem richtigen Encoding arbeiten. Dazu musst du wissen, mit welchem
Encoding die Daten gespeichert wurden.

Hinweis A: An der Stelle arbeitest du mit dem DataString. Du fügst dass "Semikolon" den
eigendlichen Daten hinzu. Je nachdem mit welchem Encoding du arbeitest, könnten den Daten
nun (beispielsweise) 1 Byte oder 2 Byte hinzugefügt werden. Daher müsstest du wissen,
welches Encoding vorliegt. ... Um genau zu sein denke ich sogar, dass bei falschem Encoding
das Auslesen und Schreiben Stream2.DataString := Stream2.DataString; bereits die Daten schon zerstören können. Oder du bekommst eine Fehlermeldung,
dass da ein Zeichen in den Bytes ist, was vom Encoding nicht unterstützt wird.

Solange Delphi (und da weiß ich jetzt nicht, wie das genau gelöst ist bei TStringStream)
intern beim LoadFromStream, SaveToFile, usw. nur mit den Bytes arbeitet wäre
das Encoding für diese Routinen halt egal. Theoretisch braucht man das Encoding ja nur
um eine Representation als String zu erhalten, vorher nicht.

(Ich hoffe ich erzähle nicht allzugroßen Unsinn, aber so hatte ich das wenigstens verstanden.
Ich bin jetzt auch kein Guru, was Encodings angeht! )

LG Incocnito
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz