

Mark-
Members-
Content Count
314 -
Joined
-
Last visited
-
Days Won
1
Everything posted by Mark-
-
Not sure where the problem is located. Changed the column type from TEXT to VARCHAR(4095) and now all the characters are fetched. Anyone used the TEXT data type of MySQL with FireDAC (using ODBC) and a DBGrid? When the type is TEXT is appears in the grid as {WIDEMEMO}. Perhaps a setting I am missing that limits the fetch size for WIDEMEMO.
-
Ralf, thanks for the response. I am using ODBC and updated the driver from 8.0.10 to 8.0.21, no joy. I did find if I issue an SQL statement for a specific record all the data for the fields is returned.
-
Same here plus, I can verify all the design and functionality goals are achieved. In some cases I write the documentation before the code. Especially when the goal is stated in one line but contains many facets.
-
Hello, Has anyone converted this unit to work on 64 bit and 32 bit? Thanks, Mark unit uDGVMUtils; interface (******************************************************************************* uDGVMUtils -- is an attempt to create one of the best virtual machine detector methods, feel free to contribute in any way you wish. Version 1.1, 2010-01-15 Copyright© you are free to use it for comercial, private or both purposes Contributors: Dorin Duminica Chee Meng *******************************************************************************) type TVMWareVersion = ( vvExpress = 1, vvESX, vvGSX, vvWorkstation, vvUnknown, vvNative); const VMWARE_VERSION_STRINGS: array [TVMWareVersion] of string = ( 'Express', 'ESX', 'GSX', 'Workstation', 'Unknown', 'Native'); type TVirtualMachineType = ( vmNative, vmVMWare, vmWine, vmVirtualPC, vmVirtualBox); const VIRTUALMACHINE_STRINGS: array[TVirtualMachineType] of string = ( 'Native', 'VMWare', 'Wine', 'Virtual PC', 'Virtual Box'); function IsRunningVMWare(var AVMWareVersion: TVMWareVersion): Boolean; overload; function IsRunningVMWare: Boolean; overload; function IsRunningWine(var AWineVersion: string): Boolean; overload; function IsRunningWine: Boolean; overload; function IsRunningVirtualPC: Boolean; function IsRunningVBox: Boolean; function IsRunningVM(var AVMVersion: string): Boolean; overload; function IsRunningVM: Boolean; overload; implementation uses SysUtils,Windows,Vcl.Dialogs; function IsRunningVMWare(var AVMWareVersion: TVMWareVersion): Boolean; const CVMWARE_FLAG = $564D5868; var LFlag: Cardinal; LVersion: Cardinal; begin LFlag := 0; try asm push eax push ebx push ecx push edx mov eax, 'VMXh' mov ecx, 0Ah mov dx, 'VX' in eax, dx mov LFlag, ebx mov LVersion, ecx pop edx pop ecx pop ebx pop eax end; except // uncomment next two lines if you wish to see exception // on E: Exception do // ShowMessage(E.message); end; // trye if LFlag = CVMWARE_FLAG then begin Result := True; case LVersion of 1: AVMWareVersion := vvExpress; 2: AVMWareVersion := vvESX; 3: AVMWareVersion := vvGSX; 4: AVMWareVersion := vvWorkstation; else AVMWareVersion := vvUnknown; end end else begin Result := False; AVMWareVersion := vvNative; end; // if LFlag = CVMWARE_FLAG then begin end; function IsRunningVMWare: Boolean; var LVMWareVersion: TVMWareVersion; begin Result := IsRunningVMWare(LVMWareVersion); end; function IsRunningWine(var AWineVersion: string): Boolean; type TWineGetVersion = function: PAnsiChar;{$IFDEF Win32}stdcall;{$ENDIF} TWineNTToUnixFileName = procedure (P1: Pointer; P2: Pointer);{$IFDEF Win32}stdcall;{$ENDIF} var LHandle: THandle; LWineGetVersion: TWineGetVersion; LWineNTToUnixFileName: TWineNTToUnixFileName; begin Result := False; AWineVersion := 'Unknown'; LHandle := LoadLibrary('ntdll.dll'); if LHandle > 32 then begin LWineGetVersion := GetProcAddress(LHandle, 'wine_get_version'); LWineNTToUnixFileName := GetProcAddress(LHandle, 'wine_nt_to_unix_file_name'); if Assigned(LWineGetVersion) or Assigned(LWineNTToUnixFileName) then begin Result := True; if Assigned(LWineGetVersion) then AWineVersion := ANSIString(LWineGetVersion); // AWineVersion := StrPas(LWineGetVersion); end; // if Assigned(LWineGetVersion) or ... FreeLibrary(LHandle); end; // if LHandle > 32 then begin end; function IsRunningWine: Boolean; var LWineVersion: string; begin Result := IsRunningWine(LWineVersion); end; function IsRunningVirtualPC: Boolean; asm push ebp; mov ebp, esp; mov ecx, offset @exception_handler; push ebx; push ecx; push dword ptr fs:[0]; mov dword ptr fs:[0], esp; mov ebx, 0; // Flag mov eax, 1; // VPC function number // call VPC db $0F, $3F, $07, $0B mov eax, dword ptr ss:[esp]; mov dword ptr fs:[0], eax; add esp, 8; test ebx, ebx; setz al; lea esp, dword ptr ss:[ebp-4]; mov ebx, dword ptr ss:[esp]; mov ebp, dword ptr ss:[esp+4]; add esp, 8; jmp @ret1; @exception_handler: mov ecx, [esp+0Ch]; mov dword ptr [ecx+0A4h], -1; // EBX = -1 ->; not running, ebx = 0 -> running add dword ptr [ecx+0B8h], 4; // ->; skip past the call to VPC xor eax, eax; // exception is handled @ret1: end; function IsRunningVBox: Boolean; function Test1: Boolean; var LHandle: Cardinal; begin Result := False; try LHandle := LoadLibrary('VBoxHook.dll'); Result := (LHandle <> 0); if Result then FreeLibrary(LHandle); except end; // trye end; // function Test1: Boolean; function Test2: Boolean; var LHandle: Cardinal; begin Result := False; try LHandle := CreateFile( '\\\\.\\\VBoxMiniRdrDN', GENERIC_READ, FILE_SHARE_READ, NIL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); Result := (LHandle <> INVALID_HANDLE_VALUE); if Result then CloseHandle(LHandle); except end; // trye end; // function Test2: Boolean; begin Result := Test1 or Test2; end; function IsRunningVM(var AVMVersion: string): Boolean; begin AVMVersion := VIRTUALMACHINE_STRINGS[vmNative]; Result := True; if IsRunningWine then AVMVersion := VIRTUALMACHINE_STRINGS[vmWine] else if IsRunningVMWare then AVMVersion := VIRTUALMACHINE_STRINGS[vmVMWare] else if IsRunningVirtualPC then AVMVersion := VIRTUALMACHINE_STRINGS[vmWine] else if IsRunningVBox then AVMVersion := VIRTUALMACHINE_STRINGS[vmVirtualBox] else begin AVMVersion := VIRTUALMACHINE_STRINGS[vmNative]; Result := False; end; end; function IsRunningVM: Boolean; var LVMVersion: string; begin Result := IsRunningVM(LVMVersion); end; end.
-
Our main product is very graphic intensive. The customers design and animate the graphics, in an editor we created, for their operators to use for controlling...anything that can be controlled. I asked a few years ago if SVG was important and was told no. I am going to reopen the question.
-
I do not want to download and use the SVG code. The project source looks good. No idea about the SVG definition. The Pascal stuff is fine for testing. Why the test? Do you have a reason for the code other than an experiment?
-
#1 You need to get a grip. #2 I insinuated nothing. Your "drug dealer" rant springs from your own mind. #3 I see you edited the original post to say you are not affiliated with the product. #4 I never said anything about free. Where you jumped to ""EVERYTHING" must be free..." is mind boggling. #5 You need to get a grip. @Lars That said - $299 for 8 licenses with source code is not over the top for what appears to be a capable piece of code. I thought the same but the page said "includes source code repository access" and while I understand all the words the phrase gives me pause. "Source code included" is the standard phrase, concise and non ambiguous. Good luck.
-
Source code for what? What you are selling?
-
Hello, I was VERY interested until I read "(no source code)" and "(includes source code repository access)". Not sure what the later means. Never purchase components without source code. My2c. Mark
-
Hello, I have a customer when opening a form with a TWSocket on it gets the following error: Error reading PrimaryTCP.ReqVerLow: Not a Winsocket error (#87 in SetReqVerLow: WinSock version can't be changed now). I have no idea the cause. Any ideas? Thanks, Mark
-
I concur and it is done. Thanks for your help.
-
OK, here is how. This program was started 13 years ago. Still going strong. 😉 Using the current version of ICS. I have 40+ old/still using forms/DMs with TWSocket on them, created years ago. All these DFMs had 1 the for the low and high property. I did not change/set/alter the ReqVerHigh or ReqVerLow properties. No, problem all works and has been for years. In the previous two months an THttpCli was added and it is called/loaded/used first in the program. It is dynamically created and the default for the CtrlSocket(TWSocket) is indeed 2 as you stated. Now, the program starts, Winsock 2 is used by the THttpCli, one of the old DFMs is used/loaded and kaboom. > ReqVerHigh or ReqVerLow would only be saved in the DFM if you changed them from the default of 2, ReqVerHigh = 1 and ReqVerLow = 1 was in all the DFMs that had a TWSocket. I grepped and replaced them all with 2 and problem solved. Perhaps I should remove them all and let the current version default value apply.
-
OK I found the error. We added some code, earlier in program execution, nothing to do with the TWSocket generating the error, using THttpCli. It is initialized first and CtrlSocket.ReqVerLow and CtrlSocket.ReqVerHigh are indeed set to 2. Now creating the TWSocket port, when the form opens using 1, as was streamed with the form, causes the crash. So we change all the TWSockets to 2 or set the THttpCli to 1.
-
Thanks for the response. > ReqVerLow after TWSocket has loaded, and why would you want to? I would not want to and if this is the ReqVerHigh and ReqVerLow in the object inspector they are both set to 1 and I did not set them.
-
Dude, I was giving potential customer feedback. Not telling him he MUST do something or preventing him from selling how he wants to sell or infringing on his "rights". SMH
-
> Yes, I can't keep developing the package without some income. No, I am purchasing a product (as is), not funding your future work. > But if you had read a bit further it says: I read the complete page. Why should I be forced to take steps to end a subscription I did not want? Why not have a checkbox, when ordering, to provide for a subscription verse forcing a subscription?
-
I looked at your page, thought it interesting and considered downloading the demo and give it a test. Then I read this "If you by a license, it will include a subscription that is renewed automatically every 12 months." And closed the page. My2c.
-
Hello, I tried using the driver with MySQL (8.0) a couple of months ago and had to add the dll to the connection parameters to get it to work, partially. After added, I was able to get it to connect but could not get other actions to succeed. I traced the error into an FD function and posted on the EMB forums with no joy. I switched to using ODBC for MySQL 8.0 and all is working. Good luck, Mark
-
Hello, Delphi 10.2 I am trying to compile an RC file included with the project. {$R 'ResStr.res' 'ResStr.rc'} Regardless of what I put in the RC file I get [on the first line]: [BRCC32 Error] ResStr.rc(1): Fatal error Expecting resource name or resource type name Ideas or anyone have a sample RC file that complies without error? Thanks, Mark
-
Hello, Bingo. Thank you. OK, is that a better resource compiler? It only had the string table as shown above. The file encoding was the issue. Everyone, thanks for the help. Mark
-
Hello, Thanks timfrost for the response. I copied/pasted the example code into the RC file, complied (Shift F9) and got the same error message. Perhaps string table or RCDATA, I have not decided. At this point I am just trying to get anything to compile. Mark
-
Hello, Thanks for the response. I added in the first post, the error is on the first line. Every example I could find on the web, in many formats. I could not find a single working example. Mark
-
How to share data between apps
Mark- replied to Tom F's topic in Algorithms, Data Structures and Class Design
Sockets without a doubt. Plus if the request comes in for source and destination on different computers, no or very few changes required. -
Happy Holidays & Merry Christmas!
Mark- replied to FPiette's topic in ICS - Internet Component Suite
Happy Holidays & Merry Christmas!