![]() |
AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
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 |
AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
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. |
AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
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. |
AW: Delphi 7 32-Bit unter Windows 10/11 64-Bit Pro (.DEU und .ENU Dateien) CRASH
Zitat:
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr. |
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