Hi zusammen
Im Moment bastle ich an einem Testprogramm, mit dem ich die Arbeit mit den im Titel genannten Komponenten austesten möchte. Noch bin ich allerdings auf der Suche nach entsprechenden Forenbeiträgen, die mir meine Fragen (hoffentlich) beantworten können und habe desshalb bislang nur wenig wirklich umgesetzt.
Da ich mit FireDac auf
MySQL arbeite, war mein erster Gedanke der an TFDMemtable. Um mir das Prinzip zu verdeutlichen, habe ich trotzdem mal das Tutorial zu
MyBase auf Delphi-Treff nachgebaut.
Doch erstmal zur Struktur, wobei es eigentlich egal ist, welche Komponente ich verwende:
Delphi-Quellcode:
procedure TDMLClientTest.FileQueryLoad;
begin
FileQuery.FieldDefs.Add('id', ftAutoinc);
FileQuery.FieldDefs.Add('fk', ftInteger);
FileQuery.FieldDefs.Add('Name', ftString);
FileQuery.FieldDefs.Add('Bitmap', ftBlob);
FileQuery.FieldDefs.Add('NEF', ftBlob);
end;
Der Procedurname ist selbst auch noch nicht in Stein gemeisselt. Passieren soll im Anschluss an obige Zeilen folgendes:
- Die Prozedur iteriert durch eine Pfadliste, die die Dateinamen meiner NEF-Dateien enthält.
- Pro Listitem wird die Nefdatei in eine entsprechende Variable geladen.
- Daraus wird eine Bitmap erstellt.
Nachdem die Pfadliste komplett durchlaufen ist, wird das ganze in eine Datei gespeichert, und gut ist - hoffentlich...
Knackpunkt könnte sein: Die NEF-Dateien sind zwischen 10 und 24 Megabite gross; daraus ertellte Bitmaps sind durchschnitlich dreimal grösser. Das ergibt einen (Arbeits-)Speicherbedarf von knappen 12GB - installiert habe ich deren 8GB...
Ein weiterer Knackpunkt könnte sein, dass das
Query gar nicht in der Lage ist, einen Datensatz per
SQL in sich selbst zu Speichern...
Auf die Idee, kein TFDMemtable, sondern nur das
Query zu verwenden, brachte mich die Erkenntnis, dass TFDMemtable die Möglichkeit, sich selbst in eine Datei zu speichern, von TDataset erbt. Und da das
Query dies auch erbt und ich eine Memorytable nicht wirklich brauche - wieso also sollte ich nicht direkt das
Query verwenden?
Wie ich oben bereits erwähnt habe, hatte ich mal einen Test mit TClientdataset geschrieben, und von daher stellt sich mir die Frage: wieso nicht gleich das verwenden?
Ein
Autoinc-Feld könnte da ein 'Problem' sein.
Was auch immer ich schlussendlich verwende: Es dient dazu,die NEF- und BMP-Bilder nicht in der eigentlichen Datenbank abzulegen, sondern in externen 'Tabellendateien', die auf beliebigen, auch
externen Laufwerken, gespeichert werden sollen.
Was würdet ihr verwenden? Was spricht für wen? Was spricht gegen wen?
Gruss
Delbor