![]() |
AW: Komischer Datenbankeffekt
Zitat:
Ciao Stefan |
AW: Komischer Datenbankeffekt
Zitat:
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. |
AW: Komischer Datenbankeffekt
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 |
AW: Komischer Datenbankeffekt
Zitat:
Guck mal bitte hier ab Minute 31:30: ![]() Zitat:
Mache aus:
Delphi-Quellcode:
Jenes:
type
TVorlage = class private public Filename: string; Settings: TSettings; Felder : Array of TFeld;
Delphi-Quellcode:
Das Array also in einer inneren Klasse "verstecken".
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; |
AW: Komischer Datenbankeffekt
Danke für den Tip, werde ich sofort versuchen umzusetzen!
Inzwischen habe ich was ganz witziges entdeckt: Vor dem Datenbankhandling erzeuge ich ein zweites Feldarray und fülle dieses aus der Vorlage. Jetzt wird beim Datenbankschreiben das Originalarray nicht mehr zerstört! Ich dachte als Würg-around dieses dann am Ende zurückzuschreiben... Ist aber gar nicht notwendig! Ich verstehe so langsam die Welt nicht mehr! Ciao Stefan |
AW: Komischer Datenbankeffekt
funktioniert nicht, "Bezeichner erwartet aber "Array" gefunden...
Delphi-Quellcode:
function GetFelder(): Array of TFeld;
Ciao Stefan |
AW: Komischer Datenbankeffekt
Zitat:
Delphi-Quellcode:
TMeineKrassenFelder = Array of TFeld;
function GetFelder(): TMeineKrassenFelder; |
AW: Komischer Datenbankeffekt
Danke, hatte ich inzwischen auch gefunden...
Leider ist das jetzt mit dem Testen so eine Sache, an hunderten Stellen im Programm greife ich auf dieses Array zu, die muss ich jetzt alle erst mal auf den Workaround umbauen und diese Miniklasse auch dafür entsprechend erweitern... Ich überlege ob ich alles, was da so noch verwendet wird, in eine extra Klasse auslagere, wer weiß ob es demnächst nicht auch noch andere Arrays "zerlegt"? Was ich wie gesagt gar nicht verstehe, der alleinige Zugriff auf das Array vor dem Datenbankhandling bewahrt es vor der Zerstörung durch dieses.... Ciao Stefan |
AW: Komischer Datenbankeffekt
Zitat:
FullDebugMode mit externer FastMM-DLL? ![]() Das würde ich mal auf deine Anwendung loslassen. Lesestoff: ![]() ![]() (mal gucken wann der erste Schlaubi Schlumpf um die Ecke kommt und sagt: "FastMM ist seit Delphi ElfDrölf integriert" - leider ist das sehr rudimentär und hilft nur begrenzt beim Suchen solcher Fehler) |
AW: Komischer Datenbankeffekt
So, ich melde mich mal wieder...
Das verstecken in einer kleinen Klasse hat nichts gebracht, hinzu kommt dass das beschriebene Phänomen nicht mehr auftritt wenn ich den identischen Code auf dem Notebook (mit identischem RAD Studio) debugge! Wie könnte man nun noch weiterkommen? Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:13 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