AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von paule32.jk · begonnen am 25. Jul 2023 · letzter Beitrag vom 30. Jul 2023
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#11

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

  Alt 26. Jul 2023, 13:17
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.
Angehängte Dateien
Dateityp: pas reinit.pas (3,5 KB, 6x aufgerufen)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
650 Beiträge
 
Delphi 11 Alexandria
 
#12

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

  Alt 26. Jul 2023, 15:41
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.

Geändert von Rolf Frei (26. Jul 2023 um 15:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#13

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

  Alt 27. Jul 2023, 16:31
Danke für Eure Tipps !
Frag doch einfach
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#14

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

  Alt 28. Jul 2023, 17:04
[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
Frag doch einfach
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#15

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

  Alt 28. Jul 2023, 19:10
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;
Frag doch einfach
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#16

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

  Alt 28. Jul 2023, 23:34
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
$2B or not $2B

Geändert von himitsu (28. Jul 2023 um 23:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#17

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

  Alt 29. Jul 2023, 09:22
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...
Frag doch einfach
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#18

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

  Alt 29. Jul 2023, 10:48
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#19

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

  Alt 29. Jul 2023, 11:22
Hallo Uwe,
...
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
Frag doch einfach
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#20

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

  Alt 29. Jul 2023, 11:45
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 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