Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   FibPLus Fehlermeldung...? TFIBWideStringField (https://www.delphipraxis.net/180478-fibplus-fehlermeldung-tfibwidestringfield.html)

manfred_h 22. Mai 2014 15:56

Datenbank: Firebird • Version: 2.5.2 • Zugriff über: FibPlus 7.51.2676

FibPLus Fehlermeldung...? TFIBWideStringField
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen

In meiner Anwendung die mit Delphi 2006 entwickelt wurde und nun mit XE4 weiterentwickelt wird habe ich seit neuestem eine spezielle Fehlermeldung.
Bin schon länger am rumsuchen finde aber die Stelle einfach nicht.
Der Fehler tritt auf wenn ich einfach in die Dateneingabe wechsle und einen wert in der Datenbank lösche, beim schliesen des Fenster erscheint dann die Fehlermeldung.
Es wird folgendes aufgerufen:
Code:
procedure Tfrm_member.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DM.DB_Gideons.Commit;
end;
Bin für jede Hilfe dankbar. :?

Habe jetzt EurekaLog 7.0.7.1 installiert und die Fehlermeldung lautet:
( Die Logdatei ist auch noch angehängt )
Zitat:

Exception:
------------------------------------------------------------------------------------------------------------
2.2 Address: 0040B7BE
2.5 Type : EInvalidPointer
2.6 Message: Application made attempt to free invalid or unknown memory block: $0BB4BCC8 DATA [?] 0 bytes.
2.7 ID : C4820000
2.11 Sent : 0
Zitat:

Call Stack Information:
-------------------------------------------------------------------------------------------------------------------------------------------------------
|Methods |Details|Stack |Address |Module |Offset |Unit |Class |Procedure/Method |Line |
-------------------------------------------------------------------------------------------------------------------------------------------------------
|*Exception Thread: ID=11436; Parent=0; Priority=0 |
|Class=; Name=MAIN |
|DeadLock=0; Wait Chain= |
|Comment= |
|-----------------------------------------------------------------------------------------------------------------------------------------------------|
|7FFFFFFE|04 |00000000|0040B7BE|Gideons_Admin.exe|0000B7BE|Syst em | |_UStrAsg |23239[37] |
|00000020|04 |0018F0B0|008A1D40|Gideons_Admin.exe|004A1D40|FIBD ataSet |TFIBWideStringField|Prepare |2152[16] |
|00000020|04 |0018F0F8|008A17C6|Gideons_Admin.exe|004A17C6|FIBD ataSet |TFIBWideStringField|GetDataToReserveBuffer |2022[4] |
|00000020|04 |0018F108|008A181B|Gideons_Admin.exe|004A181B|FIBD ataSet |TFIBWideStringField|GetAsString |2037[1] |
|00000020|04 |0018F118|00796C1C|Gideons_Admin.exe|00396C1C|Data .DB |TWideStringField |GetText |5937[3] |
|00000020|04 |0018F144|00794670|Gideons_Admin.exe|00394670|Data .DB |TField |GetDisplayText |4909[4] |
|00000020|04 |0018F150|007C3D55|Gideons_Admin.exe|003C3D55|Vcl. DBCtrls |TDBEdit |DataChange |2003[18] |
|00000020|04 |0018F170|007C35F0|Gideons_Admin.exe|003C35F0|Vcl. DBCtrls |TFieldDataLink |RecordChanged |1739[3] |
|00000020|04 |0018FF00|0072952F|Gideons_Admin.exe|0032952F|Vcl. Forms |TApplication |ProcessMessage |10288[23] |
|00000020|04 |0018FF1C|00729572|Gideons_Admin.exe|00329572|Vcl. Forms |TApplication |HandleMessage |10318[1] |
|00000020|04 |0018FF40|007298AD|Gideons_Admin.exe|003298AD|Vcl. Forms |TApplication |Run |10456[26] |
|00000020|04 |0018FF70|00F8425A|Gideons_Admin.exe|00B8425A|Gide ons_Admin| |Initialization |204[112] |
|00000020|03 |0018FFD8|77E49F40|ntdll.dll |00039F40|ntdll | | (possible RtlInitializeExceptionChain+49)| |
-------------------------------------------------------------------------------------------------------------------------------------------------------

sx2008 23. Mai 2014 06:47

AW: FibPLus Fehlermeldung...? TFIBWideStringField
 
Das sieht ganz nach einem Bug in FibPlus 7.51.2676 aus.
Entweder in TFIBWideStringField.GetDataToReserveBuffer oder in TFIBWideStringField.Prepare müsste man anfangen zu suchen.

Du könntest:
* ein Testprogramm mit Beschreibung und Testdatenbank erstellen und an Devrace schicken
* das unterliegende Datenfeld von nvarchar oder nchar nach varchar oder char ändern (falls du in dem Feld kein Unicode benötigst)
* selber im Sourcecode von TFIBWideStringField auf die Suche gehen

Perlsau 23. Mai 2014 08:42

AW: FibPLus Fehlermeldung...? TFIBWideStringField
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin sx2008,

in Firebird gibt es keinen NVarChar-Typen wie in MsSQL, sondern nur Char und VarChar. Die gewünschte Zeichenatz wird bei Firebird bereits beim Erstellen der Datenbank (Default-Zeichensatz) festgelegt und kann beim Erstellen eines Feldes in einer Tabelle noch einmal individuell eingestellt werden.

manfred_h 23. Mai 2014 10:07

AW: FibPLus Fehlermeldung...? TFIBWideStringField
 
Danke schon mal für Eure Antworten
Zitat:

Zitat von sx2008 (Beitrag 1259870)
Das sieht ganz nach einem Bug in FibPlus 7.51.2676 aus.
Entweder in TFIBWideStringField.GetDataToReserveBuffer oder in TFIBWideStringField.Prepare müsste man anfangen zu suchen.

In der Anwendung befinden sich mehrere Module ( Member.... ). Das Problem konnte ich bis jetzt nur bei den Member feststellen. Die Anwendung lief bis anhin auch ohne Probleme. Es ist mir nur unklar wo ich suchen soll.
Die Datenbank wurde nicht geändert, diese lief bis jetzt einwandfrei.:oops:

mkinzler 23. Mai 2014 10:09

AW: FibPLus Fehlermeldung...? TFIBWideStringField
 
Vielleicht steht dort ein falscher Wert in einem Feld.

manfred_h 23. Mai 2014 14:58

AW: FibPLus Fehlermeldung...? TFIBWideStringField
 
Zitat:

Zitat von mkinzler (Beitrag 1259897)
Vielleicht steht dort ein falscher Wert in einem Feld.

Hallo mkinzler
Du kannst durcaus recht haben, mein Problem ist nur das ich nicht sehe wo ich suchen soll....
Da ich "leider" mit einigen Globalen Variablen arbeite dachte ich schon das dies ein Problem verursachen könnte. Habe jetzt mal Fastmm eingerichtet und erhalte nun dies:
Code:
First chance exception at $7796C42D. Exception class EInvalidPointer with message 'Invalid pointer operation'. Process Gideons_Admin.exe (6636)
Bei CALL_FreeMem bleibt er hängen...
Sory das ich keine genauere stelle geben kann...

Code:
procedure _UStrClr(var S);
{$IFDEF CPUX86}
asm
        { ->   EAX    pointer to str }
        { <-    EAX    pointer to str }

        MOV    EDX,[EAX]                      { fetch str                    }
        TEST   EDX,EDX                        { if nil, nothing to do        }
        JE     @@done
        MOV    dword ptr [EAX],0               { clear str                    }
        MOV    ECX,[EDX-skew].StrRec.refCnt   { fetch refCnt                 }
        DEC    ECX                            { if < 0: literal str          }
        JL     @@done
   LOCK DEC    [EDX-skew].StrRec.refCnt       { threadsafe dec refCount      }
        JNE    @@done
        {$IFDEF ALIGN_STACK}
        SUB    ESP,8
        {$ENDIF ALIGN_STACK}
        PUSH   EAX
        LEA    EAX,[EDX-skew]                 { if refCnt now zero, deallocate}
        CALL   _FreeMem
        POP    EAX
        {$IFDEF ALIGN_STACK}
        ADD    ESP,8
        {$ENDIF ALIGN_STACK}
@@done:
end;

manfred_h 28. Mai 2014 11:37

AW: FibPLus Fehlermeldung...? TFIBWideStringField
 
So wie es aussieht sind die Probleme immer wie spezielle.
Nun erhalte ich beim öffnen des Projekts die Fehlermeldung das SMDBGrid nicht gefunden wird....
Code:
Cannot open file "C:\Window\system32\SMDBGrid"
Habe die SMDBGrid auch schon mal neu installiert und der Pfad in Delpfi Options / Library / Selected Platform ( 32 bit )
Code:
C:\Programme_Dev\RAD_Studio\Komponents\scalabium\smcmpnt__22_04_2014\SOURCES
Bin hier ein wenig ratlos....:pale:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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