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 3 von 3     123   
Benutzerbild von paule32.jk
paule32.jk

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

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

  Alt 29. Jul 2023, 12:07
ja, richtig !
Ich bin ja schon sehr Froh, das sich überhaupt auf meine Fragen meldet.

Wie ich schon schrieb, bin ich nicht so der Fan von Community-Versionen, die immer mehr (oder weniger)
Optionen anbieten, die man dann nur in einer Pro Version hat.

Es stimmt schon, das IHR ALLE hier das aus freien Willen machen (Support).

Aber die andere Seite will ja ein Produkt verkaufen, das mehr oder minder auch viel Arbeit
dahinter gestanden hat, und die kleinen Entwickler (also die Indianer und Polen) auch wenn Sie
Arm dran sind, jeden Tag Brot und Wasser brauchen.

Das ginge mir genauso.
Aber ich bin da in einer priviligen Situation, die ich dann auch damit entgegen komme, das ich
an anderer Stelle auch Support gebe (sofern es mir möglich ist).

Weil, man sollte mich verstehen, ich kein Trendsetter bin, und auch nicht mit der Masse gehe,
vieles von und mit Retro-Ware genutzt wird.

Es steht also kein Job vor mir, den ich brauche, um eine Familie durchzubringen.
Von daher schon ein

DICKES DANKESCHÖN FÜR SOWAS WIE HIER !!!

Gruß, paule32
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
 
#22

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

  Alt 29. Jul 2023, 17:05
Hallo,

ich war mal so frei, und habe die angehängte reinit.pas Datei bearbeitet.
Sie wirft eine Ausnahmw wie zum Beispiel:

"Resource TTimer1 not found."

im except block.

Ich gehe mal davon aus, dass die Delphi Anwendung zwar die Ressourcen-DLL (.DEU)
laden kann, aber keine Ressourcen zur Verfügung stehen.

Hatte aber explizit alle Projekte ein Update gegönt.

Code:
unit reinit;

interface

uses
  Windows, Dialogs, Messages, SysUtils, Classes, Graphics, Controls, Forms;

procedure ReinitializeForms;
function LoadNewResourceModule(Locale: LCID): Longint;

implementation

uses
  EditorForm;

var
  NewInst: Longint;
  FileLocale: String;

type
  TAsInheritedReader = class(TReader)
  public
    procedure ReadPrefix(var Flags: TFilerFlags; var AChildPos: Integer); override;
  end;

procedure TAsInheritedReader.ReadPrefix(var Flags: TFilerFlags; var AChildPos: Integer);
begin
  inherited ReadPrefix(Flags, AChildPos);
  Include(Flags, ffInherited);
end;

function SetResourceHInstance(NewInstance: Longint): Longint;
var
  CurModule: PLibModule;
begin
  CurModule := LibModuleList;
  Result := 0;
  while CurModule <> nil do
  begin
    if CurModule.Instance = HInstance then
    begin
      if CurModule.ResInstance <> CurModule.Instance then
        FreeLibrary(CurModule.ResInstance);
      CurModule.ResInstance := NewInstance;
      Result := NewInstance;
      Exit;
    end;
    CurModule := CurModule.Next;
  end;
end;

function LoadNewResourceModule(Locale: LCID): Longint;
var
  FileName: array [0..260] of char;
  res : DWORD;
  P: PChar;
  LocaleName: array[0..4] of Char;
begin
  res := GetModuleFileName(0, FileName, sizeof(FileName));
  if res <> 0 then
  begin
    GetLocaleInfo(Locale, LOCALE_SABBREVLANGNAME, LocaleName, SizeOf(LocaleName));

    NewInst := 0;
    Result := 0;

    if Length(LocaleName) > 0 then
    begin
      // Then look for a potential language/country translation
      FileLocale := ChangeFileExt(FileName, '.' + LocaleName);
      NewInst   := LoadLibraryEx(PChar(FileLocale), 0, LOAD_LIBRARY_AS_DATAFILE);

      if NewInst = 0 then
      raise Exception.Create('switch to default');

      Result := SetResourceHInstance(NewInst);
      exit;
    end;
  end else
  raise Exception.Create('Language-Module not loaded !');
  result := 0;
end;

function InternalReloadComponentRes(const ResName: string; HInst: THandle; var Instance: TComponent): Boolean;
var
  hr: HRSRC;
  ResStream: TResourceStream;
  AsInheritedReader: TAsInheritedReader;
begin
  try
    hr := FindResource(newInst, PChar(ResName), RT_RCDATA);
    ResStream := TResourceStream.Create(newInst, ResName, RT_RCDATA);
    try
      // wird nie erreicht !
      showmessage('SENSE');
      AsInheritedReader := TAsInheritedReader.Create(ResStream, 4096);
      try
        Instance := AsInheritedReader.ReadRootComponent(Instance);
      finally
        AsInheritedReader.Free;
      end;
    finally
      ResStream.Free;
    end;
  except
    on E: Exception do
    begin
      ShowMessage('Resource-Error: ' + #13#10 + E.Message);
    end;
  end;
  Result := true;
  exit;
end;

function ReloadInheritedComponent(Instance: TComponent; RootAncestor: TClass): Boolean;

  function InitComponent(ClassType: TClass): Boolean;
  begin
    if ClassType.ClassParent = nil then
    begin
      Result := False;
      exit;
    end;

    Result := InternalReloadComponentRes(ClassType.ClassName, FindResourceHInstance(
    FindClassHInstance(ClassType)), Instance) or Result;
  end;

begin
  Result := InitComponent(Instance.ClassType);
end;

procedure ReinitializeForms;
var
  Count: Integer;
  I: Integer;
begin
  Form1.Memo1.Lines.Clear;

  for I := 0 to Form1.ComponentCount - 1 do
  begin
    if (not (Form1.Components[i] is TControl))
    and (not Form1.Components[i].HasParent)
    then begin
      Form1.Memo1.Lines.Add(Form1.Components[i].Name);
      ReloadInheritedComponent(Form1.Components[I], TForm1);
    end;
  end;
end;

end.
Frag doch einfach
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

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

  Alt 29. Jul 2023, 19:42
Wieso ist jemand auf die Idee gekommen, die reinit.pas kaputtumzubauen?

Nirgendwo, von D4 bis D2006 sah die jemals so aus,
als dass da jemand auf die Idee kam alle Komponenten auf einer Form durchzulaufen, anstatt nur alle Forms.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Jul 2023 um 19:48 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
 
#24

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

  Alt 30. Jul 2023, 11:27
Wieso ist jemand auf die Idee gekommen, die reinit.pas kaputtumzubauen?

Nirgendwo, von D4 bis D2006 sah die jemals so aus,
als dass da jemand auf die Idee kam alle Komponenten auf einer Form durchzulaufen, anstatt nur alle Forms.
... hab doch oben schon geschrieben, das ich da selbst Hand angelegt habe.

wie meinen - alle Forms ?
geht doch nur um diese, die in meiner Awendung vorkommen - und nicht die, die auf "Screen" zu Finden sind.

und wenn mitnichten alle Komponenten - es werden nur die von der Prozedur beachtet, die auf der Form1 liegen - die, die in einen TFRame liegen, aber dann trotzdem im MainStream Fenster geöffnet vorliegen
nicht beachtet werden, des ja des Problem Nummer 2 ...

Gruß, paule
Frag doch einfach
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   

 

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 19:12 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