Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   D2009 Exception (https://www.delphipraxis.net/160151-d2009-exception.html)

WM_CLOSE 30. Apr 2011 22:24

AW: D2009 Exception
 
Hast du zufällig den FastMM zur Hand? im FullDebugMode?
Der könnte wichtige Infos zeigen.

vielleicht auch mal den String rauslassen (->temporär in ein Char umwandeln).
Vielleicht könnte auch ein Finalize helfen.

Ansonsten weiß ich auch keinen guten Rat:cry:

EWeiss 30. Apr 2011 22:28

AW: D2009 Exception
 
Zitat:

Zitat von WM_CLOSE (Beitrag 1097967)
Hast du zufällig den FastMM zur Hand? im FullDebugMode?
Der könnte wichtige Infos zeigen.

vielleicht auch mal den String rauslassen (->temporär in ein Char umwandeln).
Vielleicht könnte auch ein Finalize helfen.

Ansonsten weiß ich auch keinen guten Rat:cry:

Sorry wie meinst du Finalize ?

gruss

WM_CLOSE 30. Apr 2011 23:02

AW: D2009 Exception
 
ICh weiß nicht ob finalize das richtige ist. das hab ich nur grad beim googlen gelesen. Ist sowas ähnliches wie Dispose (bitte nicht hauen wenn falsch)
ist vielleicht das das richtige wonach du suchst: http://www.delphipraxis.net/149061-e...te-listen.html

Sorry ich muss jetzt auch passen.

Probier mal den FastMM, vielleicht zeigt der an was schief läuft.

EWeiss 1. Mai 2011 00:01

AW: D2009 Exception
 
Zitat:

Zitat von WM_CLOSE (Beitrag 1097970)
ICh weiß nicht ob finalize das richtige ist. das hab ich nur grad beim googlen gelesen. Ist sowas ähnliches wie Dispose (bitte nicht hauen wenn falsch)
ist vielleicht das das richtige wonach du suchst: http://www.delphipraxis.net/149061-e...te-listen.html

Sorry ich muss jetzt auch passen.

Probier mal den FastMM, vielleicht zeigt der an was schief läuft.

Danke ..
Kein problem wenn du nicht weiter weist.
Stehe ja selber auf den Schlauch glaube das die D2009 einfach zu verbuggt ist :) hehehhe

Mit den ganzen Unicode Kram.

Beispiel:
Nehme ich PAnsiChar dann meckert der compiler..
Ersetze ich es mit PChar meckert er nicht übersetzt aber in der System.pas PChar automatisch wieder zurück nach PAnsiChar. (Was für ein Quatch)
Verwende ich anstelle von PChar(System.PAnsiChar) PWideChar dann aktzeptiert der Compiler das auch ohne zu meckern beläßt es dann aber so wie es ist.
Das ist die einzigste möglichkeit warum es bei D2009 kracht weil irgendwelche Übersetzungen wieder mal nicht korrekt sind.
Aber wie den Fehler feststellen wenn der eigene Compiler nicht dazu in der lage ist die richtigen UNcode Variablen zu zuweisen.

PS:
Noch ein kleines Beispiel zum anschauen.

Delphi-Quellcode:
constructor TSkinTrackBar.Create(hOwner: HWND; FullpathImageName: string;
  x, y, tW, tH, ButID: integer; tMin, tMax: Integer; tVal: Integer;
  ARGBcolor: COLORREF; PROGRESScolor: COLORREF);
var
  wc:    TWndClassEx;
  myClass: PWideChar;

begin

  inherited Create;

  //with SkinEngine do
  //begin
    if tMin = tMax then
      Exit;

    myClass := 'SKTRACKBAR';
    wc.cbSize := SIZEOF(wc);
    IsInitialized := GetClassInfoEx(SkinEngine.skInstance, myClass, wc);
    if IsInitialized = False then
    begin
      wc.cbSize    := SIZEOF(wc);
      wc.style     := CS_HREDRAW or CS_VREDRAW or CS_DBLCLKS or CS_PARENTDC;
      wc.lpfnWndProc := @TrackProc;
      wc.cbClsExtra := 0;
      wc.cbWndExtra := EXTEND_EXTRA * 4;
      wc.hInstance := SkinEngine.skInstance;
      wc.hIcon     := 0;
      wc.hCursor   := 0;
      wc.hbrBackground := 0;
      wc.lpszMenuName := nil;
      wc.lpszClassName := myClass;
      wc.hIconSm   := wc.hIcon;
      if RegisterClassEx(wc) <> 0 then
        IsInitialized := True;
    end;
Delphi-Quellcode:
myClass: PWideChar;

laut GetClassInfoEx richtig definiert.
Funktioniert nicht mit PAnsiChar aber mit PChar
welches dann von der System.pas wieder in PAnsiChar zurück definiert wird.
Was für ein Blödsinn.


gruss

EWeiss 2. Mai 2011 17:12

AW: D2009 Exception
 
WM_CLOSE:
Danke nochmal für deine Hilfe.
Habe meinen Code dank deiner Hilfe verbessert.. siehe Dispose ;)

Das problem lag aber nicht an meiner Parser Function sondern
daran das ich vorher
Delphi-Quellcode:
  DrawTextToDC(DC, GetCTLText(ParentHandle), x, y, gColorCaption, SK_CAPTIONFONT,
    SK_CAPTIONFONTHEIGHT, -1, 0);
den Text mit string anstelle von WideString übergeben habe.
Das hatte zur folge das der Pointer "strFormat" in der GDI+ einen Fehler verursachte
da dieser nicht gültig war.

GELÖSST!

gruss

brechi 2. Mai 2011 21:21

AW: D2009 Exception
 
Naja ich versteh nicht warum du nicht einfach:

Delphi-Quellcode:
GetClassInfoEx(SkinEngine.skInstance, 'bla', wc);
machst. Bzw. einen WideString deklarierst und als PWideChar castest (wie AnsiString/String mit PChar).
Im übrigen verwendet du eine objektorientierte Sprache, warum der Umstand mit den verketteten Listen und Pointern, wenn eine TObjectList und eine Klasse um einiges eleganter und weniger fehleranfällig wäre?

EWeiss 2. Mai 2011 23:17

AW: D2009 Exception
 
Zitat:

Zitat von brechi (Beitrag 1098447)
Naja ich versteh nicht warum du nicht einfach:

Delphi-Quellcode:
GetClassInfoEx(SkinEngine.skInstance, 'bla', wc);
machst. Bzw. einen WideString deklarierst und als PWideChar castest (wie AnsiString/String mit PChar).
Im übrigen verwendet du eine objektorientierte Sprache, warum der Umstand mit den verketteten Listen und Pointern, wenn eine TObjectList und eine Klasse um einiges eleganter und weniger fehleranfällig wäre?

Und wie nennst das ?
TSkinTrackBar

keine klasse?

na ja hab schon geschrieben gelösst.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 Uhr.
Seite 2 von 2     12   

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