AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komischer Datenbankeffekt

Ein Thema von sko1 · begonnen am 24. Nov 2017 · letzter Beitrag vom 30. Nov 2017
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Komischer Datenbankeffekt

  Alt 24. Nov 2017, 09:23
Datenbank: SQLite • Version: ? • Zugriff über: FDConnection / FDQuery
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
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 09:33
Das eine hat sehr wahrscheinlich nichts mit dem anderen zu tun... Aber ohne den Source Code wird das hier ein Jahrmarktsraten...

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 09:48
Guck dir mal das Tutorial an:
http://www.delphipraxis.net/41047-tu...ortgeschr.html

Speziell der Abschnitt Datenhaltepunkte.
Damit kannst du eventuell herausfinden, wann und warum dein Array verändert wird.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 09:53
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:
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;
Zum Schreiben in die Datenbank folgender Codeschnipsel:

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
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 09:56
Bist Du Dir sicher, dass das Feld als TBlobfield erstellt wurde? Überprüfe mal den Datentyp.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 10:02
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!

SQL.TEXT := 'CREATE TABLE IF NOT EXISTS [Vorlage] (Seite INTEGER, Stream1 BLOB, .......);';

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 10:11
Bist Du Dir sicher
...
ich denke schon
Denken ist nicht überprüfen.

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.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 10:22
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:
    Vorlage.Settings.Stream1.Position := 0;
    Vorlage.Settings.Stream1.SaveToFile('c:\temp\xxx');
    TBlobfield(FDQuery.FieldByName('Stream1')).LoadFromFile('c:\temp\xxx');
und zwar genau in dem Moment TBlobfield(FDQuery.FieldByName('Stream1')).LoadFro mFile

Ciao
Stefan
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 10:37
Datenhaltepunkt...hallo? Irgendwer? Beitrag Nummer 3?
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 10:39
Ich habe umgebaut, es wird noch verwirrender:

Delphi-Quellcode:
 
   //umkopieren in anderen Stream
   ms:=TMemoryStream.Create();
   ms.Position := 0;
   ms.CopyFrom(Vorlage.Settings.Stream1, Vorlage.Settings.Stream1.size);
   ...
schon beim Kopieren in ms ist das Array Vorlage.Felder, was damit ja eigentlich überhaupt nichts zu tun hat, leer!

Ciao
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz