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
TField.Size gibt 4fachen Wert aus (ZEOS)
-
- 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)
der feind der erde ist der mensch
-
- 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)
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
-
- 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)
Ö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..
Tks vorab..
der feind der erde ist der mensch
-
- 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)
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%"
SHOW FIELDS FROM <Tabellenname>;
SHOW FIELDS FROM <Tabellenname> WHERE Type LIKE "varchar%"
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- 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)
aah, ok. Werde das heute Abend mal testen.
Tks.!
de Schorsch
Tks.!
de Schorsch
der feind der erde ist der mensch
-
- 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)
4 ist die Maximale große eines Codepoint in UTF-8 (4 bytes) und UTF-16 (2 words).