Jump to content

RTollison

Members
  • Content Count

    101
  • Joined

  • Last visited

Community Reputation

0 Neutral

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Trying to figure out how to add a shape (rectangle, small) to fast report page. SO user clicks on answers (test page) and then need to put a square/circle/whatever to indicate their answer to the question. questions random the answers (A, B, C, D) so the shape object would not be fixed location.
  2. RTollison

    RAD 10.2 Startup Script Errors

    Not sure it has anything to do with errors or not but i had learn Jenkins which requires Java 17+ for latest version. about a month or so after that i needed to change delphi dll. however, when i start RAD Studio i get like 22 errors on the startup screen all pretty much the same format. An error has occurred in the script on this page. blah blah blah URL: https://...blah.../js/jquery/jquery.min.js Also around this time our IT dept locked up a bunch more stuff. I have JAVA 21.0.2 installed. i searched for these errors but nothing came up. is it my pc/java or is it something else running interference?
  3. RTollison

    DCPCRYPTO blowfish

    thank you for the info/input. the background on this is that way back in 2014 or prior a dll was create using the DCP Crypto libraries. the blowfish cipher was selected for encrypt/decrypt functions and has been in use for all clients. now a .Net dev was asking me to give him a hand in validating that his .net/c# version is working/matching. he has a quick access point in his code to just encrypt/decrypt the indata value. so we added his test to the selftest for verification. well the first 8 matched but we wanted to determine why the last 8 were not matching to his code. i guess trying to shortcut the testing process was a little short sighted on my part. i will just let it encrypt/decrypt the same string he is testing. Thank you again...
  4. RTollison

    DCPCRYPTO blowfish

    Trying to sync up a .Net implementation of blowfish and was not syncing up so i added to the dcpcrypto for blowfish.selftest i added a new key/data items. the key3, indata3 and outdata3 then copied the code for encrypt/decrypt and then verify the in/out matched. but my data2 is getting stopped at 8 bytes and not the full 16 in the var section. so the EncryptECB is taking it off but i am not sure why. is encryptecb set to only handle 8 bytes/16wide? class function TDCP_blowfish.SelfTest: boolean; const Key1: array[0..7] of byte= ($00,$00,$00,$00,$00,$00,$00,$00); Key2: array[0..7] of byte= ($7C,$A1,$10,$45,$4A,$1A,$6E,$57); InData1: array[0..7] of byte= ($00,$00,$00,$00,$00,$00,$00,$00); InData2: array[0..7] of byte= ($01,$A1,$D6,$D0,$39,$77,$67,$42); OutData1: array[0..7] of byte= ($4E,$F9,$97,$45,$61,$98,$DD,$78); OutData2: array[0..7] of byte= ($59,$C6,$82,$45,$EB,$05,$28,$2B); Key3: array[0..31] of byte= ($ff,$8a,$0b,$85,$ff,$a9,$14,$d1,$b5,$61,$df,$31,$1f,$94,$f5,$aa,$55,$08,$b9,$ad,$49,$0a,$ba,$df,$e3,$57,$00,$37,$13,$fc,$79,$d0); InData3: array[0..15] of byte= ($54,$68,$69,$73,$20,$69,$73,$20,$61,$20,$74,$65,$73,$74,$21,$21); OutData3: array[0..15] of byte= ($e2,$77,$9b,$17,$b9,$e4,$2b,$ec,$b7,$a3,$7c,$21,$c0,$d6,$18,$93); var Cipher: TDCP_blowfish; Data: array[0..7] of byte; Data2: array[0..15] of byte; begin FillChar(Data, SizeOf(Data), 0); Cipher:= TDCP_blowfish.Create(nil); Cipher.Init(Key1,Sizeof(Key1)*8,nil); Cipher.EncryptECB(InData1,Data); Result:= boolean(CompareMem(@Data,@OutData1,Sizeof(Data))); Cipher.Reset; Cipher.DecryptECB(Data,Data); Result:= boolean(CompareMem(@Data,@InData1,Sizeof(Data))) and Result; Cipher.Burn; Cipher.Init(Key2,Sizeof(Key2)*8,nil); Cipher.EncryptECB(InData2,Data); Result:= boolean(CompareMem(@Data,@OutData2,Sizeof(Data))) and Result; Cipher.Reset; Cipher.DecryptECB(Data,Data); Result:= boolean(CompareMem(@Data,@InData2,Sizeof(Data))) and Result; Cipher.Burn; Cipher.Free; FillChar(Data2, SizeOf(Data2), 0); Cipher:= TDCP_blowfish.Create(nil); Cipher.Init(Key3,Sizeof(Key3)*8,nil); Cipher.EncryptECB(InData3,Data2); Result:= boolean(CompareMem(@Data2,@OutData3,Sizeof(Data2))) and Result; Cipher.Reset; Cipher.DecryptECB(Data2,Data2); Result:= boolean(CompareMem(@Data2,@InData3,Sizeof(Data2))) and Result; Cipher.Burn; Cipher.Free; end; procedure TDCP_blowfish.EncryptECB(const InData; var OutData); var xL, xR: DWord; begin if not fInitialized then raise EDCP_blockcipher.Create('Cipher not initialized'); xL:= Pdword(@InData)^; xR:= Pdword(longword(@InData)+4)^; xL:= ((xL and $FF) shl 24) or ((xL and $FF00) shl 8) or ((xL and $FF0000) shr 8) or ((xL and $FF000000) shr 24); xR:= ((xR and $FF) shl 24) or ((xR and $FF00) shl 8) or ((xR and $FF0000) shr 8) or ((xR and $FF000000) shr 24); xL:= xL xor PBox[0]; xR:= xR xor (((SBox[0,(xL shr 24) and $FF] + SBox[1,(xL shr 16) and $FF]) xor SBox[2,(xL shr 8) and $FF]) + SBox[3,xL and $FF]) xor PBox[1]; xL:= xL xor (((SBox[0,(xR shr 24) and $FF] + SBox[1,(xR shr 16) and $FF]) xor SBox[2,(xR shr 8) and $FF]) + SBox[3,xR and $FF]) xor PBox[2]; xR:= xR xor (((SBox[0,(xL shr 24) and $FF] + SBox[1,(xL shr 16) and $FF]) xor SBox[2,(xL shr 8) and $FF]) + SBox[3,xL and $FF]) xor PBox[3]; xL:= xL xor (((SBox[0,(xR shr 24) and $FF] + SBox[1,(xR shr 16) and $FF]) xor SBox[2,(xR shr 8) and $FF]) + SBox[3,xR and $FF]) xor PBox[4]; xR:= xR xor (((SBox[0,(xL shr 24) and $FF] + SBox[1,(xL shr 16) and $FF]) xor SBox[2,(xL shr 8) and $FF]) + SBox[3,xL and $FF]) xor PBox[5]; xL:= xL xor (((SBox[0,(xR shr 24) and $FF] + SBox[1,(xR shr 16) and $FF]) xor SBox[2,(xR shr 8) and $FF]) + SBox[3,xR and $FF]) xor PBox[6]; xR:= xR xor (((SBox[0,(xL shr 24) and $FF] + SBox[1,(xL shr 16) and $FF]) xor SBox[2,(xL shr 8) and $FF]) + SBox[3,xL and $FF]) xor PBox[7]; xL:= xL xor (((SBox[0,(xR shr 24) and $FF] + SBox[1,(xR shr 16) and $FF]) xor SBox[2,(xR shr 8) and $FF]) + SBox[3,xR and $FF]) xor PBox[8]; xR:= xR xor (((SBox[0,(xL shr 24) and $FF] + SBox[1,(xL shr 16) and $FF]) xor SBox[2,(xL shr 8) and $FF]) + SBox[3,xL and $FF]) xor PBox[9]; xL:= xL xor (((SBox[0,(xR shr 24) and $FF] + SBox[1,(xR shr 16) and $FF]) xor SBox[2,(xR shr 8) and $FF]) + SBox[3,xR and $FF]) xor PBox[10]; xR:= xR xor (((SBox[0,(xL shr 24) and $FF] + SBox[1,(xL shr 16) and $FF]) xor SBox[2,(xL shr 8) and $FF]) + SBox[3,xL and $FF]) xor PBox[11]; xL:= xL xor (((SBox[0,(xR shr 24) and $FF] + SBox[1,(xR shr 16) and $FF]) xor SBox[2,(xR shr 8) and $FF]) + SBox[3,xR and $FF]) xor PBox[12]; xR:= xR xor (((SBox[0,(xL shr 24) and $FF] + SBox[1,(xL shr 16) and $FF]) xor SBox[2,(xL shr 8) and $FF]) + SBox[3,xL and $FF]) xor PBox[13]; xL:= xL xor (((SBox[0,(xR shr 24) and $FF] + SBox[1,(xR shr 16) and $FF]) xor SBox[2,(xR shr 8) and $FF]) + SBox[3,xR and $FF]) xor PBox[14]; xR:= xR xor (((SBox[0,(xL shr 24) and $FF] + SBox[1,(xL shr 16) and $FF]) xor SBox[2,(xL shr 8) and $FF]) + SBox[3,xL and $FF]) xor PBox[15]; xL:= xL xor (((SBox[0,(xR shr 24) and $FF] + SBox[1,(xR shr 16) and $FF]) xor SBox[2,(xR shr 8) and $FF]) + SBox[3,xR and $FF]) xor PBox[16]; xR:= xR xor PBox[17]; xL:= ((xL and $FF) shl 24) or ((xL and $FF00) shl 8) or ((xL and $FF0000) shr 8) or ((xL and $FF000000) shr 24); xR:= ((xR and $FF) shl 24) or ((xR and $FF00) shl 8) or ((xR and $FF0000) shr 8) or ((xR and $FF000000) shr 24); Pdword(@OutData)^:= xR; Pdword(longword(@OutData)+4)^:= xL; end;
  5. RTollison

    activex word97 word

    reason for the older one is that we committed to that version from the start and now our clients have 2000+ documents (for all clients not just one) and we would be the ones to reformat the dot to a dotx and update dl. so for now we will use old so that our clients will not overwhelm our support teams.
  6. RTollison

    activex word97 word

    i think you helped me answer my stupid question. in 10.2 i do not have the Office 2000 options turned on.
  7. RTollison

    activex word97 word

    <DCCReference Include="uMain.pas"> <CoClasses>Word</CoClasses> </DCCReference> ... lines above in the include for the .dproj for the project not my original project but handed off to me for some desired updates/features.
  8. RTollison

    activex word97 word

    interface uses ActiveX; // *********************************************************************// // Declaration of Enumerations defined in Type Library // *********************************************************************// // Constants for enum WdMailSystem type WdMailSystem = TOleEnum; const wdNoMailSystem = $00000000; wdMAPI = $00000001; wdPowerTalk = $00000002; wdMAPIandPowerTalk = $00000003; // Constants for enum WdTemplateType type WdTemplateType = TOleEnum; const wdNormalTemplate = $00000000; wdGlobalTemplate = $00000001; wdAttachedTemplate = $00000002; // Consta ......
  9. RTollison

    activex word97 word

    // *********************************************************************// // Declaration of CoClasses defined in Type Library // (NOTE: Here we map each CoClass to its Default Interface) // *********************************************************************// Word = IWord; // *********************************************************************// // Interface: IWord // Flags: (4416) Dual OleAutomation Dispatchable // GUID: {4261D89B-82E0-4ED7-8F71-BCEF8E6E267E} // *********************************************************************// IWord = interface(IDispatch) ['{4261D89B-82E0-4ED7-8F71-BCEF8E6E267E}'] function OpenSession(var ASessionID: Integer): Integer; safecall; function CloseSession(ASessionID: Integer): Integer; safecall; function ReleaseSession(ASessionID: Integer): Integer; safecall; function SessionCount: Integer; safecall; function OpenFile(ASessionID: Integer; AFilePath: OleVariant; var AFileID: Integer): Integer; safecall; ....
  10. RTollison

    activex word97 word

    original delphi 5 new delphi 10.2 word ole automation - original was word 2003 new is word 365 i have been trying different things in the dll and found that if I change all calls of FSession.Word.Selection.Paste() to FSession.Word.Selection.PasteAndFormat(WdRecoveryType.wdFormatOriginalFormatting); it formats the same. but my page layout is off because original dot is 1 page and the newly created document is 2 pages. the last part of the dot is a salutation type text but instead of bottom of the document it goes to the top of the next page. but overall the text/spacing "seems" to be the same.
  11. RTollison

    activex word97 word

    I have a very old project for interfacing with Word. Originally done when i had Word 97 and 2003 later. Created dot file in 97-03 format and all worked great. now i am adding some extra stuff to the old project BUT with my new activex/dll i get a different format when loading up the old dot files. paragraph spacing, default font. it's like it doesn't care about the dot being in an older format. but when i revert back to the original compiled activex/dll it works. same font, same paragraph spacing. what would i look for as the trigger for old 97-03 format versus new format. the dot has times font but when i load it up using new compiled dll i get Calibri (default for new session in WORD) but the older dll will keep it as Times.
  12. RTollison

    tfileopendialog tsclient on folder changing event

    well hell, after rebooting server due to the annoying updates need installing message, i rebooted it and let it install update. now it is working correctly.
  13. RTollison

    tfileopendialog tsclient on folder changing event

    i created a simple program just to shcreate while change the variable text \\tsclient on the first shcreate command of \\tsclient comes up with c:\users\xxxx\documents then when i execute it a second time with the same execute command i get c:\users\xxxxx\desktop its run in a loop is my meaning of second time thru the loop. the third time thru the loop it fails th shcreate. i have the shcreate within the folderchanging of a tfileopendialog event.
  14. RTollison

    tfileopendialog tsclient on folder changing event

    it was being sent in as variable and it is \\tsclient something is special about \\tsclient because i did a net use z: \\tsclient\c\myfolder and ran that shcreate against z: and it worked. i tried variations 'tsclient', 'network\\tsclient' i am trying to force the lookup path to be tsclient and let user select from tsclient\? only. the shcreate will work if i only select one of the shares but not the root. NOTE: Yes the defaultfolder is \\tsclient but that shcreate is for verifying that the user stays within tsclient I will keep doing some searching, found an article referencing 'my pc' and other special names so maybe i will eventually find tsclient out there somewhere.
  15. Dlg := Sender as TFileOpenDialog; if Succeeded(SHCreateItemFromParsingName(PWideChar(WideString('\\tsclient')), nil, IShellItem, DefFolder)) then Is there a way to for that command to work when parsing tsclient. if i set it to 'C:\myfolder' it works but when i rdp to server (with drives shared and are accessible) when i set the string to '//tsclient' it fails. I have searched for shcreateitemfromparsingname and tsclient but can't find anything
×