TField.Size gibt 4fachen Wert aus (ZEOS)

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
schorsch
Beiträge: 46
Registriert: Sa 20. Mär 2010, 23:00
OS, Lazarus, FPC: Win10x64, RaspberryPi, MAC
CPU-Target: so ziemlich alles

TField.Size gibt 4fachen Wert aus (ZEOS)

Beitrag von schorsch »

Moin @ALL,
ich habe hier ein Proggi, die verschiedenste MySQL-DBs connected. U.a. ermittelt dieses die Felder von Tabellen. Dabei werden die Feldeigenschaften per TField.xx ermittelt.
Jetzt zu meiner Frage/Problem. Wenn ich jetzt bspw. ein varchar(50) habe, dann gibt mir .size den Wert 200 raus, obwohl ja eigtl. 50. Ich denke, dass das am jeweils eingestellten Zeichensatz/Kollation liegt, weil ja dann entsprechend 1,2,4 Byte pro Zeichen - richtig?

Die eigentliche Frage ist jetzt, wie ich denn bei der ".size-Ermittlung" da am besten vorgehen könnte, damit ich unabhängig von der jeweiligen Datenbank wäre?

Jemand ne Idee?

Tks vorab..

de schorsch
der feind der erde ist der mensch

MmVisual
Beiträge: 1466
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: TField.Size gibt 4fachen Wert aus (ZEOS)

Beitrag von MmVisual »

Man muss mit dem jeweiligen SQL Befehl die CREATE Routine der Tabelle auslesen und die Struktur analysieren. Zeos muss die 4-Fache Menge an Bytes je Zeichen rechnen, damit der Byte-Buffer alle Multibyte Zeichen aufnehmen kann.
EleLa - Elektronik Lagerverwaltung - www.elela.de

schorsch
Beiträge: 46
Registriert: Sa 20. Mär 2010, 23:00
OS, Lazarus, FPC: Win10x64, RaspberryPi, MAC
CPU-Target: so ziemlich alles

Re: TField.Size gibt 4fachen Wert aus (ZEOS)

Beitrag von schorsch »

Öhm Danke erstmal aber da stehe ich ein Wenig auf dem Schlauch :-( "create-Routine der Tabelle" - die Tabellen sind doch schon da oder wie meinst du das?

Tks vorab..
der feind der erde ist der mensch

MmVisual
Beiträge: 1466
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: TField.Size gibt 4fachen Wert aus (ZEOS)

Beitrag von MmVisual »

Man kann den SQL Befehl, wie die Tabelle erzeugt wurde von der Datenbank auslesen.

SHOW FIELDS FROM <Tabellenname>;

SHOW FIELDS FROM <Tabellenname> WHERE Type LIKE "varchar%"
EleLa - Elektronik Lagerverwaltung - www.elela.de

schorsch
Beiträge: 46
Registriert: Sa 20. Mär 2010, 23:00
OS, Lazarus, FPC: Win10x64, RaspberryPi, MAC
CPU-Target: so ziemlich alles

Re: TField.Size gibt 4fachen Wert aus (ZEOS)

Beitrag von schorsch »

aah, ok. Werde das heute Abend mal testen.

Tks.!

de Schorsch
der feind der erde ist der mensch

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: TField.Size gibt 4fachen Wert aus (ZEOS)

Beitrag von marcov »

4 ist die Maximale große eines Codepoint in UTF-8 (4 bytes) und UTF-16 (2 words).

Antworten