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 2  1 2      
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.422 Beiträge
 
Delphi 12 Athens
 
#1

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.

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

Registriert seit: 27. Jan 2017
607 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

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.082 Beiträge
 
Delphi 10.4 Sydney
 
#3

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
607 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

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
sko1

Registriert seit: 27. Jan 2017
607 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 10:40
Zitat:
Datenhaltepunkt...hallo? Irgendwer? Beitrag Nummer 3?
ich debugge ja, was willst Du mir denn eigentlich damit sagen?

Ciao
Stefan
  Mit Zitat antworten Zitat
TiGü

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

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 10:55
Zitat:
Datenhaltepunkt...hallo? Irgendwer? Beitrag Nummer 3?
ich debugge ja, was willst Du mir denn eigentlich damit sagen?

Ciao
Stefan
Hast du das Tutorial angeschaut?
Ein Datenhaltepunkt ist kein normaler roter Haltepunkt!
Du kannst explizit auf dein Array einen Datenhaltepunkt setzen und das Programm hält an, wenn auf der Adresse geschrieben wird.
Anhand des Call Stacks wirst du dann sicherlich schlauer.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
607 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 12:12
Leider macht mich das überhaupt nicht schlauer, nur dümmer

Ich habe jetzt die Memorystreams in den Settings durch Strings ersetzt, welche ich an den entsprechenden Stellen dann wieder in einen Stream lade oder den Stream in String konvertiere.
Das Array bleibt ganz auch während des Wegschreibens in die Datenbank (FDQuery.fieldbyname('...').asstring aber dann beim FDQuery.Post ist das Array wieder weg!

Das kann doch alles nicht wahr sein!

Kommentiere ich das Schreiben dieser langen Strings aus ist nach Post alles noch in Ordnumg!

So langsam komme ich zu dem Eindruck, dass die FDQuery irgendwelche Probleme mit langen Feldinhalten hat?

Nur wie komme ich jetzt weiter?

Ciao
Stefan
  Mit Zitat antworten Zitat
TiGü

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

AW: Komischer Datenbankeffekt

  Alt 24. Nov 2017, 12:34
Leider macht mich das überhaupt nicht schlauer, nur dümmer
Wenn du nicht genau verstanden hast wie es geht, dann frage doch einfach nach?!

Guck mal bitte hier ab Minute 31:30:
https://www.youtube.com/watch?v=eqs27gB7Zms

Nur wie komme ich jetzt weiter?
Probiere mal folgendes.

Mache aus:
Delphi-Quellcode:
type
  TVorlage = class
  private
  public
    Filename: string;
    Settings: TSettings;
    Felder : Array of TFeld;
Jenes:
Delphi-Quellcode:
TWorkaround = class
public
  Felder : Array of TFeld;
end;

type
  TVorlage = class
  private
  public
    Filename: string;
    Settings: TSettings;
    FelderPerWorkaround :TWorkaround
...
  function GetFelder: Array of TFeld;
...
function TVorlage.GetFelder: Array of TFeld;
begin
  Result := FelderPerWorkaround.Felder;
end;
Das Array also in einer inneren Klasse "verstecken".
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Komischer Datenbankeffekt

  Alt 28. Nov 2017, 15:19
Hallo,
fehlt vielleicht irgendwo ein TXStream.Create?
Heiko
  Mit Zitat antworten Zitat
sko1

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

AW: Komischer Datenbankeffekt

  Alt 29. Nov 2017, 08:33
So, endlich kann ich positive Rückmeldung geben!

Die Datenbank war nicht das eigentliche Problem, wie FastMM4 mir mitgeteilt hat.
Problemursache war das Array of TSonderfeld wobei

Delphi-Quellcode:
type
  TSonderfeld = record
    Feld1: integer;
    Feld2: integer;
    ...
  end;

ein primitiver Record war.
Diesen habe ich jetzt in eine Klasse gepackt und benutze nun ein Array dieser Klasse.

Warum ein Array aus Records hier Probleme gemacht hat (es gibt auch weitere solche Arrays ohne negative Effekte) und die Probleme nun als Klassen-Array beseitigt sind, entzieht sich allerdings meiner Kenntnis...

Ich werde auf jeden Fall vorsorglich auch die anderen Records als Klassen deklarieren!

Ciao
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:17 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