Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Fehler bei TLanguages (https://www.delphipraxis.net/158137-fehler-bei-tlanguages.html)

Thomas Feichtner 7. Feb 2011 12:05

Fehler bei TLanguages
 
Hallo,

beim Start meines Programmes auf einen Server (2003 bzw. 2008) stürzt mein Programm mit folgender Fehlermeldung ab (siehe unten).

Auf einen XP bzw Win7 Rechner funktioniert es Problemlos. Im Programm habe ich nur folgenden Code:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  oLang: TLanguages;
begin
  oLang := TLanguages.Create;
end;
Code:
operating system : Windows 2003 Service Pack 2 build 3790
system language  : German
processors       : 2x Intel(R) Xeon(R) CPU 3040 @ 1.86GHz
physical memory  : 1584/2046 MB (free/total)
display mode     : 1280x1024, 32 bit
process id       : $d00
allocated memory : 2,48 MB
executable       : Project2.exe
exec. date/time  : 2011-02-07 13:00
compiled with    : Delphi 7
callstack crc    : $0012fde2, $bad4cc31, $bad4cc31
exception class  : EAccessViolation
exception message : Zugriffsverletzung bei Adresse 0012FDE2. Schreiben von Adresse 0012FDE2.

main thread ($b6c):
0012fde2 +000 ???
7c806db3 +00d kernel32.dll                   EnumSystemLocalesA
0045a6ba +052 Project2.exe SysUtils 16382  +9 TLanguages.Create
004b1bf3 +013 Project2.exe Unit1       32  +1 TForm1.FormCreate
004a4b1d +031 Project2.exe Forms    2648  +3 TCustomForm.DoCreate
004a478d +019 Project2.exe Forms    2575  +1 TCustomForm.AfterConstruction
00403eb7 +007 Project2.exe System   9066  +1 @AfterConstruction
004a475a +176 Project2.exe Forms    2569 +16 TCustomForm.Create
00461979 +04d Project2.exe Classes  2758  +7 TList.Add
004ad9e4 +03c Project2.exe Forms    6947  +4 TApplication.CreateForm
004b1f17 +02f Project2.exe Project1    16  +2 initialization

Deep-Sea 7. Feb 2011 12:15

AW: Fehler bei TLanguages
 
Gegenfrage: Warum erzeugst du eine Instanz von TLanguages? Nutze die Funktion Languages, die dir ein Singleton zurück geben wird.

Thomas Feichtner 7. Feb 2011 13:16

AW: Fehler bei TLanguages
 
Das Problem kommt nicht von mir sonder von Devexpress vom cxLocalizer. Ich habe nur versucht eine kleine Testapplication zu erstellen mit genau dem gleichen Fehler.

Code:
0017fd72 +000 ???
765f60fd +011 kernel32.dll                         EnumSystemLocalesA
0045a6ba +052 Project1.exe SysUtils      16382  +9 TLanguages.Create
0045a7c0 +014 Project1.exe SysUtils      16437  +2 Languages
004b0b8d +039 Project1.exe cxLocalization  309  +2 TcxLanguage.GetName
004b1c3a +05a Project1.exe Unit1             32  +3 TForm1.FormCreate
Wie gesagt, auf XP, Win7 funktioniert es nur auf Servern (2003 und 2008 derzeit getestet) nicht.

himitsu 7. Feb 2011 14:26

AW: Fehler bei TLanguages
 
Zitat:

Code:
0017fd72 +000 ???
765f60fd +011 kernel32.dll                        EnumSystemLocalesA
0045a6ba +052 Project1.exe SysUtils     16382  +9 TLanguages.Create
0045a7c0 +014 Project1.exe SysUtils     16437  +2 Languages
004b0b8d +039 Project1.exe cxLocalization 309  +2 TcxLanguage.GetName
004b1c3a +05a Project1.exe Unit1             32  +3 TForm1.FormCreate

Letztendlich also doch wieder vom Callback für EnumSystemLocalesA in TLanguages.Create

Mit Server 2003 R2 (SP2) und D7 Pro gibt es hier keine Probleme.

Hast du denn mal versucht zu debuggen und nachzusehn ob und bei welchem Befehl es in TLanguages.LocalesCallback (SysUtils) knallt,
bzw. wohin dein Delphi bei TLanguages.Create > EnumSystemLocales springt?

Thomas Feichtner 8. Feb 2011 07:43

AW: Fehler bei TLanguages
 
Leider ist unser 2003 kein R2 :-(.

Ich muss mir erst einen Server mit IDE aufsetzen um genau nachschauen zu können wo es kracht.

raller09 8. Feb 2011 07:56

AW: Fehler bei TLanguages
 
eingeschaltete Windows Datenausführungsverhinderung (Data Execution Prevention, DEP)?

such mal nach "LanguagesDEPfix.pas" bzw. http://cc.embarcadero.com/Item/23411

MfG

Thomas Feichtner 8. Feb 2011 08:24

AW: Fehler bei TLanguages
 
Danke für den Link. Leider hat dieser nichts genützt (hatte natürlich die Unit im Programm an erster stelle).

Dann habe ich das Programm in die Datenausführungsverhinderung reingegeben, dann funktioniert es für Windows 2003 aber nicht für Win2008!


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