Forum: Datenbanken
Delphi
by Mithrandir,
7. Mai 2009
:wall:
Dax ist vermutlich unschuldig, ich bin nur zu dämlich, BLOBs zu schreiben. Denn mit der U_Store_Dynamic_Params.pas von sirius kann ich das Array in einem FileStream speichern und auch wieder lesen. Nur mit den BLOBs nicht.. :wall:
Kennt jemand ein Tutorial, dass die Verwendung von BLOBS mit Zeos und Firebird en Detail beschreibt? Am Besten ein richtiges Anfängertutorial, "Blobs for...
Forum: Datenbanken
Delphi
by Mithrandir,
7. Mai 2009
Hi,
ja, das Verhalten tritt immer auf.
So schreibe ich die Knoten und die dazugehörigen Tags in die Datenbank:
procedure TORPDataBase.WriteNodeToDB(Node: TORPNode);
var
Blob: TMemoryStream;
begin
Forum: Datenbanken
Delphi
by Mithrandir,
7. Mai 2009
Dax,
irgendwie funktioniert ein Teil deines Code nicht. Wenn ich mit ReadTags die Tags auslesen möchte, dann alloziiert er im ersten Durchlauf ~600 MB, den zweiten Durchlauf schafft er gar nicht mehr, weil er dann nicht genug Arbeitsspeicher hat.
Wenn ich mir diese Funktion ansehe, dann sollte man meinen, dass er 4 Byte liest:
function TORPDataBase.ReadInt(Stream: TMemoryStream):...
Forum: Datenbanken
Delphi
by Mithrandir,
3. Mai 2009
Ist das mit mir wirklich so ein Trauerspiel? Ich weiß, ich konnt's mal besser... :cry:
Danke ;)
Forum: Datenbanken
Delphi
by Mithrandir,
3. Mai 2009
Weißt du aus dem Kopf, ob folgende Idee auch klappen könnte?
//Größe des Records dank String bekannt
TORPTag = packed record
Key: String;
Value: String;
end;
TORPTags = Array of TORPTag;
Forum: Datenbanken
Delphi
by Mithrandir,
3. Mai 2009
Genau dasselbe. Außerdem ist mir eingefallen, dass ich die Strings in der Länge begrenzen muss. Sonst weiß ich ja gar nicht, wo was anfängt und aufhört, wenn ich das ganze wieder auslesen will, oder?
Forum: Datenbanken
Delphi
by Mithrandir,
3. Mai 2009
Hmm... WriteLN kann man aber nicht direkt für TStream nutzen, oder? :gruebel: Bei mir kommt immerhin die Meldung:
Forum: Datenbanken
Delphi
by Mithrandir,
3. Mai 2009
Hi ihr beiden,
So langsam bröckelt die Mauer vor meinem geistigen Auge. Die herangehensweise über WriteLN find ich dabei interessant. Darauf wäre ich von selbst wohl nicht gekommen... :gruebel:
Danke ihr zwei. ;)
Forum: Datenbanken
Delphi
by Mithrandir,
3. Mai 2009
Ok, danke. Also, oft kann ich mit deinen berühmten "One Linern" ja was anfangen, aber hier:
bin ich etwas überfordert... :mrgreen:
Ein einfaches
fStream.Write(Way.Tags, SizeOf(Way.Tags));
Forum: Datenbanken
Delphi
by Mithrandir,
3. Mai 2009
@mkinzler, Dax:
:(
Also, ich drösel das Problem mal von Anfang an auf:
Momentan werden die Tags in einer Schleife in die Datenbank geschrieben, und die ID anschließend einem String angehängt. Dieser String wird dann in der Datenbank gespeichert.
Im Quelltext sieht das so aus:
Forum: Datenbanken
Delphi
by Mithrandir,
3. Mai 2009
Hi ihr,
irgendwie habe ich gerade eine Denkblockade und such mir schon n Wolf:
Ich möchte ein Array, dass bspw. so aufgebaut ist, in eine Firebird-Datenbank schreiben:
TORPTag = packed record
Key: String;
Value: String;
end;