erich.wanker Posted March 29, 2019 Share Posted March 29, 2019 Hi .. now - i am searching 2 days to find the errors... What is the best way to find a EAccessViolation ?? The 1st. error comes by starting my project .. the 2.nd error comes if i showmodal a simple UniForm 1.) Versatile.dll: 000036F0: 10:11:07 [Zugriffsverletzung bei Adresse 47CC2612 in Modul 'Versatile.dll'. Lesen von Adresse 00000648-::1]:EAccessViolation : Zugriffsverletzung bei Adresse 47CC2612 in Modul 'Versatile.dll'. Lesen von Adresse 00000648 : Addr: $47CC2612 2.) Versatile.dll: 00003148: 10:11:10 [::1]:EAccessViolation : Zugriffsverletzung bei Adresse 47CDFA61 in Modul 'Versatile.dll'. Schreiben von Adresse 00000000 : Addr: $47CDFA61 I user Win10 (32Bit) - Delphi XE4 .. Firebird sql Server 2.5 (zeos Lib) ThanX Erich Link to comment Share on other sites More sharing options...
Sherzod Posted March 29, 2019 Share Posted March 29, 2019 Hi, http://unigui.com/doc/online_help/eurekalog.htm ? Link to comment Share on other sites More sharing options...
erich.wanker Posted March 29, 2019 Author Share Posted March 29, 2019 Hi .. thanX for your support .. 1 Question ...i installed Eurekalog ... imported the UniGui settings ..But nothing happens .. no informations or subfolder are created in htdocs-folder of Apach server - where the unigui is located i have in my dpr file this ( the manual of Unigui just talks about EXE Files - i need DLL) library Versatile; uses EAppDLL, uniGUIISAPI, Forms, ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule}, MainModule in 'MainModule.pas' {UniMainModule: TUniGUIMainModule}, ... .. {$R *.res} exports GetExtensionVersion, HttpExtensionProc, TerminateExtension; end. Link to comment Share on other sites More sharing options...
Administrators Farshad Mohajeri Posted March 29, 2019 Administrators Share Posted March 29, 2019 Hi You need to add additional units. Please see unigui docs. Link to comment Share on other sites More sharing options...
erich.wanker Posted March 29, 2019 Author Share Posted March 29, 2019 hi Farshad :-) if i add EMemLeaks, EResLeaks, ExceptionLog7, to my dll - project and click "compiling" .. delphi delets the 3 lines .. just "EAppDLL," exists .. "Please see unigui docs." -> the only information i found is: http://unigui.com/doc/online_help/index.html?eurekalog.htm Link to comment Share on other sites More sharing options...
erich.wanker Posted April 1, 2019 Author Share Posted April 1, 2019 push :-) I use Delphi XE4 / Win10 / Apache Webserver 2.4 My Steps i installed: EurekaLog7-Trial.exe / Version 7.7.8.24 RC 24 i imported C:\Program Files\FMSoft\Framework\uniGUI\Utils\EurekaLog\uniGUI.eof i set path for Log file in Delphi - Projects / EurekaLOG / Options i set in Delphi - Project / Options: Delphi-Compiler /Compiler / use Debug-dcus (for all configurations) i put a EurekaLogEvents1 on my MainForm ( must i write something in the Events??) if i compile my project - and copy the dll in my "htdoc" folder of apache and start the apache service - my app starts ... but i become no Loggfile ore something else from EurekaLog.. If i compile my project - i become successful mesage: [EurekaLog] Versatile.dproj(1): EurekaLog post-processing (7.7.8.24 RC 24)... Versatile.dproj(1): Project compilation was successful. Versatile.dproj(1): Post-processing executable Versatile.dproj(1): Executing: "C:\Program Files\Neos Eureka S.r.l\EurekaLog 7\Packages\Studio18\ecc32speed.exe" "--el_alter_exe=I:\Win7_mountainoffice\englisch\_Versatile_test_1\Versatile.dproj;I:\Win7_mountainoffice\englisch\_Versatile_test_1\Versatile.dll" --el_gui_error=1315758 --el_nologo --el_mode=Delphi "--el_profile=Release" --el_starttime=43556.4163335995 "--el_outputfilename=I:\Win7_mountainoffice\englisch\_Versatile_test_1\Versatile.dll" --el_outputfilehandle=5452 --el_nostats --el_UnicodeOutput Versatile.dproj(1): Loading EurekaLog options... Versatile.dproj(1): EurekaLog postprocessor start... Versatile.dproj(1): EurekaLog's options were added Versatile.dproj(1): EurekaLog's data was added Versatile.dproj(1): EurekaLog postprocessor end Versatile.dproj(1): Post-processing was successful. Versatile.dproj(1): Deleting .map/.tds/.drc files... Versatile.dproj(1): EurekaLog's project post-processing completed. I have following SETUP file for EurekaLog [Exception Log] EurekaLog Version=8000 _CustomProfile="" Activate=1 atDLL=1 atISAPI=1 boSaveCompressedCopyInCaseOfError=0 boUseMainModuleOptions=0 CompatibilityMode=0 csoCaptureDelphiExceptions=1 DefaultThreadState=1 DeleteMapAfterCompile=1 Dialog Class="TMessageBoxDetailedDialog" dpDLLExports=0 Encrypt Password="" HTMLLayout="%U003Chtml%U003E\r\n %U003Chead%U003E\r\n %U003C%%content_type%%%U003E\r\n %U003Cmeta http-equiv=\qcontent-style-type\q content=\qtext/css\q /%U003E\r\n %U003Ctitle%U003E%U003C%%TITLE%%%U003E%U003C/title%U003E\r\n %U003C/head%U003E\r\n %U003Cbody%U003E\r\n %U003Ch1%U003EInternal Application Error%U003C/h1%U003E\r\n %U003Cp%U003E%U003C%%EXCEPTION_MESSAGE%%%U003E%U003C/p%U003E\r\n %U003Cp%U003E%U003Chr width=\q100%%\q%U003E\r\n %U003Cp%U003EThe exception details were saved to log file. Contact site administrator.%U003C/p%U003E\r\n %U003C/body%U003E\r\n%U003C/html%U003E" InjectInfo=1 InjectOptions=1 loAddComputerNameInLogFileName=1 loAddDateInLogFileName=1 loCatchLeaks=0 loCatchLeaksExceptions=0 loEmptyFreedMemory=1 Mandatory e-mail=0 Output Path="C:\\VersatileServer\\htdocs\\Bugging\\" ProjectID="{C4AD2BEA-0074-4DE3-AB95-7F038AD38C26}" SlowAndSafe=1 sndAddComputerNameInFileName=0 sndBugZillaAppendText=0 sndBugZillaLogin="your-account" sndBugZillaUseEMail=0 sndFogBugzAppendText=0 sndFogBugzLogin="your-account" sndFTPLogin="your-account" sndJIRAAppendText=0 sndJIRALogin="your-account" sndMantisAppendText=0 sndMantisLogin="your-account" sndMantisUseWSDL=1 sndMAPITarget="your-email@example.com" sndScreenshot=0 sndSendInSeparatedThread=0 sndShellRecepient="your-email@example.com" sndShowFailureMsg=0 sndShowSendDialog=0 sndShowSuccessMsg=0 sndSMAPITarget="your-email@example.com" sndSMTPClientFrom="your-email@example.com" sndSMTPClientLogin="your-account" sndSMTPClientTarget="your-email@example.com" sndSMTPServerFrom="your-email@example.com" sndSMTPServerTarget="your-email@example.com" sndTimeout=60000 soAppCompilationDate=0 soAppName=0 soAppParameters=0 soAppStartDate=0 soAppUpTime=0 soAppVersionNumber=0 soCustomData=0 soExcCount=0 soExcDate=0 soExcModuleName=0 soExcModuleVersion=0 Link to comment Share on other sites More sharing options...
Freeman35 Posted April 1, 2019 Share Posted April 1, 2019 I'm using unigui logs event. UniSession.Log(); or UniServerModule.Logger.AddLog(); In your app, In first line of create, show, active etc form's events so you can find problem is where. Then add try except block like Try I:=1; anycommand but only one command or procedure/function I:=2; except UniSession.Log('Unitname.procedurename has exception and I value is ' + I.ToString); end; UniSession.Log('Unitname.procedurename finished and I value is ' + I.ToString); If see in log file, I value is 1 problem in "anycommand" line, so focus there. One more trick, allways check variable before create or free. I mean, "If not Assigned(...)then..." or If ....<>nil then ..." etc. Link to comment Share on other sites More sharing options...
erich.wanker Posted April 1, 2019 Author Share Posted April 1, 2019 Hi Freeman.. thanX for your help .. i use allso unisession.log . but this is not enouth ;-) the Log says there is a problem - but i dont find the reason or the position in code ... i think - EurekaLog7 is the right tool - but i can´t get it to work :-( ThanX erich Link to comment Share on other sites More sharing options...
Freeman35 Posted April 1, 2019 Share Posted April 1, 2019 1 hour ago, erich.wanker said: i think - EurekaLog7 is the right tool - but i can´t get it to work :-( Yes you right. And you wrote, eurekalog not work, so I wrote my idea Best way is always known way On my app usually see, if exception created on app run, db or some queries try open. this mean they are Active property is true on design time. For this issue I'm using gexperts tool. For second error, need follow create & show events of form's. some time haveto use onform ready or before/after show event. regards 1 Link to comment Share on other sites More sharing options...
erich.wanker Posted April 1, 2019 Author Share Posted April 1, 2019 hi Freeman35 .. ThanX for your help !! Just a litte explaning what and why the Error-Finding it´s so horrible ;-) My problem is - the original sourcecode is a Delphi 7 Application - 10 years old - 160 Forms - and a lot of 3rd part components (LMDTools , wollToWoll Grid..) i translatet all components with a small Programm ... :-) !!!!! (stringreplace .. search "TLabel" -> make TuniLabe ... and so on) the project works with 60% .. BUT sometimes (report printing stuff..) i become errors - what i dont find ... I will try to get the EurekaLog7 -Thing to work :-) Nice greetings Erich Link to comment Share on other sites More sharing options...
Tokay Posted April 1, 2019 Share Posted April 1, 2019 I recomend to replace component with GExperts. It could help with replacing. http://www.gexperts.org/tour/ I quickly and simply translate about 100 forms to UniGUI from VCL. Link to comment Share on other sites More sharing options...
wprins Posted April 1, 2019 Share Posted April 1, 2019 2 hours ago, Tokay said: I recomend to replace component with GExperts. It could help with replacing. http://www.gexperts.org/tour/ I quickly and simply translate about 100 forms to UniGUI from VCL. Interesting. I use GExperts nearly daily, though mostly the grep search. I've known about the component translation abilities but it's always put me off that you'd have to manually do this, but seemingly I'm wrong? Are you saying you could set up definitions to automatically translate components in a reproducible fashion? (If so how? Any examples?) Link to comment Share on other sites More sharing options...
wprins Posted April 1, 2019 Share Posted April 1, 2019 2 hours ago, erich.wanker said: My problem is - the original sourcecode is a Delphi 7 Application - 10 years old - 160 Forms - and a lot of 3rd part components (LMDTools , wollToWoll Grid..) i translatet all components with a small Programm ... :-) !!!!! (stringreplace .. search "TLabel" -> make TuniLabe ... and so on) the project works with 60% .. BUT sometimes (report printing stuff..) i become errors - what i dont find ... I will try to get the EurekaLog7 -Thing to work :-) Nice greetings Erich OK, you have to be very careful with the Ansi -> Unicode changeover. With D7, strings equated to Ansi strings (8-bit characters) and so D7 era code sometimes makes assumptions about buffer sizes, strings and the size of a Char and a PChar which may not be true anymore. Because in modern delphi Char = WideChar and hence it can happen that a buffer (allocated in bytes) is perhaps now too small to hold what is actually a widechar buffer/string etc, leading to buffer overflows and access violations. You need to review the code for use of Char, PChar, and strings and change the code to be explicit if you want to continue using Ansi strings, .e.g change the code to PAnsiChar and AnsiChar respectively. Or you must migrate the code to account for the new unicode semantics. Aside: We use madExcept, which is a competitor of Eurekalog. Maybe you'll find it easier to use. (Maybe not.) One other comment: There's quite a few leak and memory checking options in FastMM, including heap corruption checks. The latter might help you track down buffer overflows and such. (Heap checking can make apps really slow though, so needs to be carefully employed.) For more see: https://wiert.me/2009/07/29/delphi-fastmm-using-fastmm4-for-debugging-your-memory-allocations-part-1-introduction/ Edit: I've stumbled over this, which should help you: https://eurekalog.blogspot.com/2009/05/access-violation-in-details_12.html Link to comment Share on other sites More sharing options...
Tokay Posted April 2, 2019 Share Posted April 2, 2019 17 hours ago, wprins said: Interesting. I use GExperts nearly daily, though mostly the grep search. I've known about the component translation abilities but it's always put me off that you'd have to manually do this, but seemingly I'm wrong? Are you saying you could set up definitions to automatically translate components in a reproducible fashion? (If so how? Any examples?) Here is better link: http://www.gexperts.org/tour/replace_components.html I open VCL form in the UniGUI app and manually change all components to the UniGUI components. It's not fully automatically, but it's help a lot. Link to comment Share on other sites More sharing options...
erich.wanker Posted April 2, 2019 Author Share Posted April 2, 2019 if someone needs this .. just for playing around... :-) Memo1.text := StringReplace(Memo1.text, 'TLMDSimpleLabel', 'TUniLabel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLMDGroupBox','TUniGroupBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TAdvPageControl', 'TUniPageControl', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TAdvTabSheet', 'TUniTabSheet', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLMDFormDisplay', 'TuniPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLMDCheckBox', 'TUniCheckBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLDMComboBox', 'TUniComboBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLMDSimplePanel', 'TuniPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLMDFill', 'TuniPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLMDStarter', 'TuniPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLMDSysInfo', 'TuniLabel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TXPManifest', 'TuniPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLMDGroupBox', 'TUniGroupBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TOpenDialog', 'TuniPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TOpenPictureDialog', 'TuniPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TMenuItem', 'TUniMenuItems', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TSaveDialog', 'TuniPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TZipMaste', 'TuniPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TJvComputerInfoEx', 'TuniPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TwwDBGrid', 'TuniDBGrid', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TWebBrowser', 'TUniURLFrame', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TJvBrowseForFolderDialog', 'TuniPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLMDBitmapList', 'TUniImageList', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLMDSpeedButton', 'TUniBitBtn', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLMDLabel', 'TuniLabel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TJVLabel', 'TuniLabel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLMDDirDlg', '{manual_work}', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TPaintBox', 'TUniCanvas', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'class(TForm)', 'class(TUniForm)', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'class(TFrame)', 'class(TUniFrame)', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TBitBtn', 'TUniBitBtn', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TButton', 'TUniButton', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TCalendar', 'TUniCalendar', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TCalendarDialog', 'TUniCalendarDialog', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TCalendarPanel', 'TUniCalendarPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TCanvas', 'TUniCanvas', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TChart', 'TUniChart', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TCheckBox', 'TUniCheckBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TComboBox', 'TUniComboBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TColorButton', 'TUniColorButton', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TColorPalette', 'TUniColorPalette', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TContainerPanel', 'TUniContainerPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDateTimePicker', 'TUniDateTimePicker', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBCheckBox', 'TUniDBCheckBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBComboBox', 'TUniDBComboBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBDateTimePicker', 'TUniDBDateTimePicker', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBEdit', 'TUniDBEdit', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBFormattedNumberEdit', 'TUniDBFormattedNumberEdit', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBGrid', 'TUniDBGrid', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBHTMLMemo', 'TUniDBHTMLMemo', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBImage', 'TUniDBImage', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBListBox', 'TUniDBListBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBLookupComboBox', 'TUniDBLookupComboBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBLookupListBox', 'TUniDBLookupListBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBMemo', 'TUniDBMemo', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBNavigator', 'TUniDBNavigator', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBNumberEdit', 'TUniDBNumberEdit', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBRadioGroup', 'TUniDBRadioGroup', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TDBText', 'TUniDBText', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TEdit', 'TUniEdit', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TFieldSet', 'TUniFieldSet', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TFileUpload', 'TUniFileUpload', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TFormattedNumberEdit', 'TUniFormattedNumberEdit', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TGenericControl', 'TUniGenericControl', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TGroupBox', 'TUniGroupBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'THiddenPanel', 'TUniHiddenPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'THTMLFrame', 'TUniHTMLFrame', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'THTMLMemo', 'TUniHTMLMemo', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TImage', 'TUniImage', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TImageList', 'TUniImageList', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TLabel', 'TUniLabel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TListBox', 'TUniListBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TMemo', 'TUniMemo', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TMenuButton', 'TUniMenuButton', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TNativeImageList', 'TUNINativeImageList', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TMainMenu', 'TUniMainMenu', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TNumberEdit', 'TUniNumberEdit', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TPageControl', 'TUniPageControl', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TPanel', 'TUniPanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TPopupMenu', 'TUniPopupMenu', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TProgressBar', 'TUniProgressBar', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TRadioButton', 'TUniRadioButton', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TRadioGroup', 'TUniRadioGroup', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TScreenMask', 'TUniScreenMask', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TScrollBox', 'TUniScrollBox', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TSimplePanel', 'TUniSimplePanel', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TSpeedButton', 'TUniSpeedButton', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TSpinEdit', 'TUniSpinEdit', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TSplitter', 'TUniSplitter', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TStatusBar', 'TUniStatusBar', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TStringGrid', 'TUniStringGrid', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TSyntaxEdit', 'TUniSyntaxEdit', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TTabControl', 'TUniTabControl', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TThreadTimer', 'TUniThreadTimer', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TTimer', 'TUniTimer', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TToolBar', 'TUniToolBar', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TTrackBar', 'TUniTrackBar', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TTreeView', 'TUniTreeView', [rfReplaceAll, rfIgnoreCase]); Memo1.text := StringReplace(Memo1.text, 'TURLFrame', 'TUniURLFrame', [rfReplaceAll, rfIgnoreCase]); 1 Link to comment Share on other sites More sharing options...
Freeman35 Posted April 2, 2019 Share Posted April 2, 2019 Hi, If I were you, I use gexperts and change one by one. Because, event name can change, create order change. Gexperts tool has a settings too. how to use, right click on component, and click "Replace components..." https://svn.code.sf.net/p/gexperts/code/trunk I'm using svn version. It has a build commandline script. https://blog.dummzeuch.de/gexperts-documentation/compiling-gexperts/ Link to comment Share on other sites More sharing options...
wprins Posted April 2, 2019 Share Posted April 2, 2019 Back to the AV tracking topic, I later remembered about "SafeMM" (https://stackoverflow.com/questions/1039646/trying-to-locate-safemm-for-delphi, probably the best link seems to be http://cc.embarcadero.com/item/28681) which you may also be interested in maybe trying, and then found the following question on StackOverflow with references to several other relevant projects: https://stackoverflow.com/questions/17164155/delphi-tools-technics-for-tracking-propagated-access-violation Hope that helps. Edit: aaaand then on Eurekalog's site again:https://eurekalog.blogspot.com/2010/03/memory-problems-in-delphi-apps-final_30.html Link to comment Share on other sites More sharing options...
picyka Posted May 28, 2020 Share Posted May 28, 2020 On 3/29/2019 at 6:20 AM, erich.wanker said: Hi .. now - i am searching 2 days to find the errors... What is the best way to find a EAccessViolation ?? The 1st. error comes by starting my project .. the 2.nd error comes if i showmodal a simple UniForm 1.) Versatile.dll: 000036F0: 10:11:07 [Zugriffsverletzung bei Adresse 47CC2612 in Modul 'Versatile.dll'. Lesen von Adresse 00000648-::1]:EAccessViolation : Zugriffsverletzung bei Adresse 47CC2612 in Modul 'Versatile.dll'. Lesen von Adresse 00000648 : Addr: $47CC2612 2.) Versatile.dll: 00003148: 10:11:10 [::1]:EAccessViolation : Zugriffsverletzung bei Adresse 47CDFA61 in Modul 'Versatile.dll'. Schreiben von Adresse 00000000 : Addr: $47CDFA61 I user Win10 (32Bit) - Delphi XE4 .. Firebird sql Server 2.5 (zeos Lib) ThanX Erich Were you able to configure this version of eurekalog on unigui? Link to comment Share on other sites More sharing options...
erich.wanker Posted May 30, 2020 Author Share Posted May 30, 2020 hello picyka, NO - i didnt get it to run Link to comment Share on other sites More sharing options...
picyka Posted May 31, 2020 Share Posted May 31, 2020 On 30/05/2020 at 11:11, erich.wanker said: olá picyka, NÃO - eu não consegui rodar My version here is 7.7.8.31, maybe as settings that you have to import are not compatible. Link to comment Share on other sites More sharing options...
Mehmet Emin Posted May 31, 2020 Share Posted May 31, 2020 Hello @picyka madExcept also works with uniGUI and will show you the exact location of your exception. Install madExcept eval and just add this few lines to your server module. Link to comment Share on other sites More sharing options...
picyka Posted July 18, 2021 Share Posted July 18, 2021 On 5/31/2020 at 11:45 AM, Mehmet Emin said: Hello @picyka madExcept also works with uniGUI and will show you the exact location of your exception. Install madExcept eval and just add this few lines to your server module. Could you give me the correct way to use madExcept I would like to test it, what do you need to configure? Thanks Link to comment Share on other sites More sharing options...
Tokay Posted July 18, 2021 Share Posted July 18, 2021 You can find madExcept configuration maual here: http://help.madshi.net/madExceptSettings1.htm Just configure mE for work as with any other dll. 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now