Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH (https://www.delphipraxis.net/213407-delphi-7-32-bit-unter-windows-10-11-64-bit-pro-deu-und-enu-dateien-crash.html)

Uwe Raabe 26. Jul 2023 13:17

AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
 
Liste der Anhänge anzeigen (Anzahl: 1)
In der D7 Hilfe ist dazu folgendes zu finden:
Zitat:

Eine Ressourcen-DLL kann nicht nur beim Start einer Anwendung geladen werden, sondern es ist auch möglich, die verwendete Ressourcen-Datei zur Laufzeit zu wechseln. Wenn Sie Ihre Anwendung mit dieser Funktionalität versehen wollen, nehmen Sie in die uses-Anweisung die Unit ReInit auf. (Diese Unit befindet sich im Verzeichnis Demos im Richedit-Beispiel.) Um die verwendete Sprache zu wechseln, übergeben Sie in einem Aufruf von LoadResourceModule die LCID für die neue Sprache und rufen anschließend ReinitializeForms auf.

Mit den folgenden Anweisungen können Sie die Sprache der Benutzeroberfläche in Französisch ändern:

Delphi-Quellcode:
const
  FRENCH = (SUBLANG_FRENCH shl 10) or LANG_FRENCH;
if LoadNewResourceModule(FRENCH) <> 0 then
  ReinitializeForms;
Dieses Vorgehen hat den Vorteil, dass die aktuelle Instanz der Anwendung mit allen zugehörigen Formularen verwendet werden kann. Dabei ist weder eine Aktualisierung von Registrierungseinstellungen mit anschließendem Neustart der Anwendung noch die erneute Anforderung von benötigten Ressourcen (z.B. das Anmelden bei einem Datenbank-Server) erforderlich.

Bei einem Wechsel der Ressourcen-DLL werden die Eigenschaftswerte in den laufenden Instanzen der Formulare durch die entsprechenden Eigenschaftswerte der neuen DLL ersetzt.

Hinweis

Änderungen, die zur Laufzeit an den Formulareigenschaften vorgenommen wurden, gehen verloren. Nach dem Laden der neuen DLL werden keine Standardwerte zurückgesetzt. Sie dürfen deshalb im Quelltext nie davon ausgehen, dass die Formularobjekte automatisch mit ihrem Anfangsstatus neu initialisiert werden.
Die entsprechende Unit reinit.pas habe ich mal angehängt.

Rolf Frei 26. Jul 2023 15:41

AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
 
Zitat:

Zitat von paule32.jk (Beitrag 1524878)
Hallo,
Diese Sprachdateien haben dann die Endung .DEU für Deutsch sowie .ENU f+r Englisch US.
Diese Dateien werden auch problemlos erstellt.

Ein wichtiger Hinweis für dich: DEU ist nicht "Deutsch", sondern "Deutsch (Deutschland)". Das heisst die DEU Datei wird nur in Deutschland funktionieren und nicht in der Schweiz oder Österreich. Das Gleiche gilt für die Endung ENU. Diese wird nur in der USA funktionieren und nicht in anderen englischprachigen Regionen, die nicht "Englisch (US)" eingestellt haben, z.B. England.

Soll deine Sprachdatei bei allen deutschen Sprachvarianten gültig sein, muss die Datei auf DE (für Englisch auf EN) enden. Die 3-Stellige Endung betrifft nur eine Sprachregion, wobei der 2-stellige Endung der nicht regionsbezogenen Sprache entspricht, also alle deutschsprachigen Regionen.

paule32.jk 27. Jul 2023 16:31

AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
 
Danke für Eure Tipps !

paule32.jk 28. Jul 2023 17:04

AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
 
[QUOTE=Uwe Raabe;1524914]
Zitat:

Die entsprechende Unit reinit.pas habe ich mal angehängt.
Danke !

Ich habe bemerkt, dass, wenn ich eine Komponente in Delphi 7 auf die TForm ändere (löschen z.B.)
dann ändert sich doch auch die Ressourcen-DLL (wenn man über Project->Languages->DLL ein update
durchführt).

Kommischerweise habe ich dann das Problem, das immer die erste Unit/Module vom Projekt in der
Projekt .DPR hinzugefügt wird - also doppelt dann vorkommt.

Ist das ein bekannter Bug von Delphi 7 ?
Wurde der bereits mit dem Nachfolger behoben ?

Gruß, paule

paule32.jk 28. Jul 2023 19:10

AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
 
Hallo,

ich habe die reinit.pas in das Projekt aufgenommen.
Weiters habe ich unten stehenden Quellcode.
Leider bekomme ich beim aufrufen der Prozedur eine Ausnahme: "Ancestor for '' not found."
Ist da vielleicht ein Fehler in der reinit.pas ?

Gruß, paule

Code:
procedure TForm1.PopupMenu_Tools_Language_GermanClick(Sender: TObject);
const
  GERMAN = (SUBLANG_GERMAN shl 10) or LANG_GERMAN ;
begin
  try
    if LoadNewResourceModule(GERMAN) <> 0 then
    ReinitializeForms;
  except
    on E: Exception do
    begin
      ShowMessage('Exception occur:' + #13#10 + E.Message);
    end;
  end;
end;

himitsu 28. Jul 2023 23:34

AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
 
Dass es einen Fehler gab, weiß man auch so.
Und ohne dieses nutzlose Try-Except, sogar mit Fehler-Icon im Dialog.

In einem nicht-englischsprachigem Delphi/Windows ergibt das hier auch noch einen unnötigen Sprachmischmasch.

PS: Delphi-Referenz durchsuchensLineBreak

paule32.jk 29. Jul 2023 09:22

AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
 
heißt also, dass man schon beim Laden/Starten die Sprache festsetzen sollte,
da ein Englisher Mensch ja eigentlich kein Deutsch im Normalfall kann...

klingnlogisch...

Uwe Raabe 29. Jul 2023 10:48

AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
 
Du kannst die Sprache auch in der Registry einstellen. Für Delphi 7 Apps ist das der Zweig HKEY_CURRENT_USER\SOFTWARE\Borland\Locales, bei neueren Delphi Versionen das entsprechende CodeGear oder Embarcadero Pendant (wobei es da auch noch Fallbacks gibt). Dort legt man einen Zeichenfolge-Eintrag (REG_SZ) mit dem vollständigen Pfad zur Exe als Name und dem Sprachkürzel (DE, EN, FR...) als Wert an.

Fehlt dieser Eintrag wird die aktuelle Spracheinstellung von Windows verwendet. In der Regel passt sich das Programm also automatisch an.

Wird keine passende DLL gefunden, kommt die beim Compilieren der Exe verwendete Sprache zur Anwendung.

paule32.jk 29. Jul 2023 11:22

AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
 
Hallo Uwe,
...
Zitat:

Zitat von Uwe Raabe (Beitrag 1525041)
Fehlt dieser Eintrag wird die aktuelle Spracheinstellung von Windows verwendet. In der Regel passt sich das Programm also automatisch an.

ja, das stimmt.
Allerdings immer erst nach dem eigentlichen Start, nicht jedoch danach.

Zum Beispiel könnte man doch eine englische Ausgabe produzieren, die dann ein Franzose (der English
kann auf English stellen - während der Laufzeit).

Vielleicht könnte man auch ein Server-Programm schreiben, das 4 Monate mit einen Russen und weitere
4 Monate mit einen Deutschen betrieben werden kann, das ServerProgramm aber nicht neu gestartet
werden kann oder soll.

Unter Windows ist es natürlich einleuchtend, dass es 4 Monate wohl nicht überstehen wird, ohne einen
neuen Neustart - aber halt mal angenommen ...

Und warum sollten hier Tipps gegeben werden (himitsu), von denen man schon weiss, das diese nicht
funktionieren.
Das soll jetzt keine Beleidung sein.
Aber von Profis sollte man wohl mehr erwarten, als von mir als Neuling.

Gruß, paule

Uwe Raabe 29. Jul 2023 11:45

AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
 
Man sollte dabei aber auch zugute halten, dass zum einen Delphi 7 von den meisten hier schon seit vielen Jahren nicht mehr verwendet wird und zum anderen die Sprachunterstützung in Delphi auch nur von sehr wenigen genutzt wurde/wird. Insofern musst du wohl damit leben, dass du hier vermutlich oft nur noch theoretische Antworten bekommst, die im Wesentlichen auf vagen Erinnerungen oder den verfügbaren Dokumentationen beruht (die übrigens auch weit vor Erscheinen von Windows 10 erstellt wurden, das offiziell von Delphi 7 gar nicht unterstützt wird), weil es kaum einer hier ausprobieren kann oder will.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.
Seite 2 von 3     12 3      

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 by Thomas Breitkreuz