TDBGrid ergänzt nicht das Komma bei float
-
Guten Tag zusammen!
Beim
TDBGrid
habe ich mehrere Spalten, einige davon sindint
,string
,diese funktionieren auch wie gewünscht, ABERfloat
;
Wenn ichDoppelklick
oder mit denPfeiltasten
navigiere und das Feld editieren möchte:
präzise Eingabe:2,56
bei ungünstiger Eingabe:200
bekomme ich Stack Überlauf und das wars. ... ABER ich habe noch eine andere Form und dort werden die 200 auf 200,00 korrigiert ... but HOW?DBGrid1->Columns->Items[4]->Field->SetFieldType(ftFloat);
habe ich bereits versucht
-
Zeige mal (einen Teil des) Stacktrace. Hast du Ereignisse, welche rekursiv dort aufgerufen werden?
-
->:763d2f0b KERNELBASE.MultiByteToWideChar + 0x1b :00910575 __linkproc__ WCharFromChar(WCharDest=????, DestChars=????, CharSource=????, SrcBytes=22, CodePage=1252) :009117A6 __linkproc__ InternalUStrFromPCharLen(Dest=????, Source=:00FD1733, Length=????, CodePage=1252) :00911801 __linkproc__ __linkproc__ UStrFromPCharLen(Dest=????, Source=????, Length=????) :007EA74B TMainForm::ApplicationEvents1Exception(this=:02183F50, Sender=:0D1CF0C0, E=:0CED80F0) :00923603 __linkproc__ TCustomApplicationEvents::DoException(Self=????, Sender=????, E=????) :00976A2C __linkproc__ TApplication::HandleException(Self=????, Sender=????) :008E5096 __linkproc__ StdWndProc(Window=792080, Message=256, WParam=40, LParam=22020097) :7796137b USER32.AddClipboardFormatListener + 0x4b :7795834a ; C:\Windows\SysWOW64\USER32.dll :779560ba ; C:\Windows\SysWOW64\USER32.dll :77955e80 USER32.DispatchMessageW + 0x10
KERNELBASE.MultiByteToWideChar: 763D2EF0 8BFF mov edi,edi 763D2EF2 55 push ebp 763D2EF3 8BEC mov ebp,esp 763D2EF5 81ECFC000000 sub esp,$000000fc 763D2EFB A150CB4B76 mov eax,[$764bcb50] 763D2F00 33C5 xor eax,ebp 763D2F02 8945FC mov [ebp-$04],eax 763D2F05 8B4518 mov eax,[ebp+$18] 763D2F08 8B5514 mov edx,[ebp+$14] ->763D2F0B 53 push ebx 763D2F0C 56 push esi 763D2F0D 8B7510 mov esi,[ebp+$10]
wenn ich anschließend F7 oder F8 drücke kommt die Zugriffsverletzung
-
TMainForm::ApplicationEvents1Exception
ist doch eine Funktion von dir. Setze da mal einen Haltepunkt und überprüfe, was dort aufgerufen wird.Edit: Dein eigentliches Problem behebt das dann noch nicht, aber du solltest erst einmal ein lauffähiges Exception-Handling hinbekommen.