![]() |
Datenbank: SQLite • Version: ? • Zugriff über: FDConnection / FDQuery
Komischer Datenbankeffekt
Hallo,
ein besserer Threadtitel fiel mir nicht ein, ich debugge seit Stunden und komme nicht weiter: Folgender Ablauf: Es gibt eine global deklarierte Klasse, welche unter anderem ein Array beinhaltet. Dieses wird beim Erstellen der Klasse mit SetLength eingestellt und gefüllt. Nun speichere ich in einer SQLite-DB folgendermaßen: - Tabellen anlegen - Tabellen füllen Jedes Tabelle füllen erzeugt eine Connection zur DB, füllt die Tabelle und Destroid diese Connection wieder. Das Füllen der ersten Tabellen funktioniert, bei der dritten Tabelle ist beim .Connected := true der FDConnection plötzlich das Array leer (High()=-1)!!!!! Da ich absolut keinen Zusammenhang sehe, das Tabelle füllen bei den ersten Malen funktioniert, bin ich mit meinem Latein am Ende! Hat irgend jemand eine Idee wo ich ansetzen könnte? Ciao Stefan |
AW: Komischer Datenbankeffekt
Das eine hat sehr wahrscheinlich nichts mit dem anderen zu tun... Aber ohne den Source Code wird das hier ein Jahrmarktsraten...
...:cat:... |
AW: Komischer Datenbankeffekt
Guck dir mal das Tutorial an:
![]() Speziell der Abschnitt Datenhaltepunkte. Damit kannst du eventuell herausfinden, wann und warum dein Array verändert wird. |
AW: Komischer Datenbankeffekt
Jetzt habe ich mal etwas entdeckt, aber warum das so ist, vielleicht weiß jemand etwas:
Den kompletten (sehr umfangreichen) Code kann ich leider nicht zur Verfügung stellen, ich versuche mal zu skizzieren: global deklariert:
Delphi-Quellcode:
Zum Schreiben in die Datenbank folgender Codeschnipsel:
type
TFeld = record Eintrag1: integer; Eintrag2: integer; ... end; type TSettings = record Eintrag1: integer; Eintrag2: integer; Stream1 : TMemoryStream; Stream2 : TMemoryStream; ... end; type TVorlage = class private public Filename: string; Settings: TSettings; Felder : Array of TFeld;
Delphi-Quellcode:
Vorlage.Settings.Stream1.Position := 0;
TBlobfield(FDQuery.FieldByName('Stream1')) .LoadFromStream(Vorlage.Settings.Stream1); end; und mit dieser Zeile LoadFromStream... ist das Array of TFeld leer! Kann jemand damit etwas anfangen? Ciao Stefan |
AW: Komischer Datenbankeffekt
Bist Du Dir sicher, dass das Feld als TBlobfield erstellt wurde? Überprüfe mal den Datentyp.
...:cat:... |
AW: Komischer Datenbankeffekt
ich denke schon, das Speichern / Laden der Streams hat ja vorher funktioniert, jetzt möchte ich zusätzlich das Array speichern und es wird dabei zerstört!
Delphi-Quellcode:
SQL.TEXT := 'CREATE TABLE IF NOT EXISTS [Vorlage] (Seite INTEGER, Stream1 BLOB, .......);';
Ciao Stefan |
AW: Komischer Datenbankeffekt
Zitat:
Zitat:
Unabhängig davon, es ist wahrscheinlich, dass der Fehler schon an anderer Stelle auftritt und durch einen Überlauf verursacht wurde. Wenn Du die Reihenfolge der Deklarationen in Deiner Klasse änderst, dann würdest Du evtl. den Inhalt einer anderen Variable zerstören. ...:cat:... |
AW: Komischer Datenbankeffekt
Wie bekomme ich solch einen Überlauf raus?
Selbst wenn ich den Stream auf Platte zwischenkopiere und daraus ins Datenbankfeld schreibe ist das Array futsch!
Delphi-Quellcode:
und zwar genau in dem Moment TBlobfield(FDQuery.FieldByName('Stream1')).LoadFro mFile
Vorlage.Settings.Stream1.Position := 0;
Vorlage.Settings.Stream1.SaveToFile('c:\temp\xxx'); TBlobfield(FDQuery.FieldByName('Stream1')).LoadFromFile('c:\temp\xxx'); Ciao Stefan |
AW: Komischer Datenbankeffekt
Datenhaltepunkt...hallo? Irgendwer? Beitrag Nummer 3?
|
AW: Komischer Datenbankeffekt
Ich habe umgebaut, es wird noch verwirrender:
Delphi-Quellcode:
schon beim Kopieren in ms ist das Array Vorlage.Felder, was damit ja eigentlich überhaupt nichts zu tun hat, leer!//umkopieren in anderen Stream ms:=TMemoryStream.Create(); ms.Position := 0; ms.CopyFrom(Vorlage.Settings.Stream1, Vorlage.Settings.Stream1.size); ... Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:08 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