31 Mar 2012 @ 7:03 PM 

Un install DMC
Run these TWO cleaners

Install DMC and during the installation process use the SAME folders for BOTH app and data

For example c:\cgf\data management or d:\cgf\data management (or any other ROOT folder)

Et voila ;)

Posted By: JP (DMC)
Last Edit: 31 Mar 2012 @ 10:13 PM

EmailPermalinkComments (1)
Tags
Categories: FAQ's & Tips

 31 Mar 2012 @ 6:49 PM 

First I’d HIGHLY recommend NOT using the UAC compatible paths as they DO create timing “problems” even if the data is kept under user folders under W7 mainly.
(see here if you want to uninstall and reinstall using the same folders)
Use for example c:\cgf\data management or d:\cgf\data management (or any ROOT folder) for BOTH the app and data paths in the installer.

Install version 2 using these settings

Run DMC version2 (and request a serial if need be)

Navigate to your APP folder (c:\cgf\data management) and RENAME “data management” to “data management_v2″ then CREATE a folder named “data management” and leave it empty

Install DMC version 3 – the installer will install in xxx\data management

Run DMC version 3

When you want to switch back to version2 – rename your folders

Et voila ;)

Posted By: JP (DMC)
Last Edit: 31 Mar 2012 @ 07:04 PM

EmailPermalinkComments (0)
Tags
Categories: FAQ's & Tips

 19 Mar 2012 @ 11:46 AM 

Using a TPS encrypted table or obfuscating your code on SQL queries :

If the SQL query or connection string OR the normal TPS (NOT DAT) encrypted password (not the new c7 “thing”) is well and properly “hidden” inside the application (exe or data.dll) then good luck to the guys wanting to hack it

The main difference here is that is is NOT possible (except if you write such a program which is NOT an easy task) here to use BRUTE FORCE (ie loop on “possibilities” and try to open the file) – it would need a restart of your “reading” software for each new “password possibility” …. time … money (again)

BUT remember also that All is possible – all depends on the amount of TIME the hacker is ready to invest to crack the password.

I’d say use a TPS encrypted BUT be “intelligent” when you store the password :

1. do NOT use in DCT a declared pwd
2. do NOT use a DCT variable and then a (plain) STRING primed in code because that will show in the exe
3. use a DCT var and a COMBINATION of LONG and STRING to BUILD the pwd in code

You must know that this “shows” in the exe opened in any HEX editor :

MyString = ‘MyPassword” <– MyPassword will be visible in HEX
MyLong   = 19032012         <– 19032012 will be visible in HEX

Use this type of coding convention instead :
MyString  = VAL(‘M’) & VAL(‘y’) & VAL(P’) etc ….

To go even further you can use this technique and this type of code

This is my main password creation procedure :

! ————————- Start Procedure ————————- !
ctDMC_MAIN.FillValues_Defaults   PROCEDURE
CODE
IF DMC_SC_V:L_A = 0 OR Char_Driver1 = ” OR Char_Driver2 = ”
R# = 5
A# = 5
CLEAR(DMC_SC_Values)
DMC_SC_V:L_A = VAL(‘a’) – R# + A#
DMC_SC_V:L_B = VAL(‘b’) – R# + A#
DMC_SC_V:L_C = VAL(‘c’) – R# + A#
DMC_SC_V:L_D = VAL(‘d’) – R# + A#
DMC_SC_V:L_E = VAL(‘e’) – R# + A#
DMC_SC_V:L_F = VAL(‘f’) – R# + A#
DMC_SC_V:L_G = VAL(‘g’) – R# + A#
DMC_SC_V:L_H = VAL(‘h’) – R# + A#
DMC_SC_V:L_I = VAL(‘i’) – R# + A#
DMC_SC_V:L_J = VAL(‘j’) – R# + A#
DMC_SC_V:L_K = VAL(‘k’) – R# + A#
DMC_SC_V:L_L = VAL(‘l’) – R# + A#
DMC_SC_V:L_M = VAL(‘m’) – R# + A#
DMC_SC_V:L_N = VAL(‘n’) – R# + A#
DMC_SC_V:L_O = VAL(‘o’) – R# + A#
DMC_SC_V:L_P = VAL(‘p’) – R# + A#
DMC_SC_V:L_Q = VAL(‘q’) – R# + A#
DMC_SC_V:L_R = VAL(‘r’) – R# + A#
DMC_SC_V:L_S = VAL(‘s’) – R# + A#
DMC_SC_V:L_T = VAL(‘t’) – R# + A#
DMC_SC_V:L_U = VAL(‘u’) – R# + A#
DMC_SC_V:L_V = VAL(‘v’) – R# + A#
DMC_SC_V:L_W = VAL(‘w’) – R# + A#
DMC_SC_V:L_X = VAL(‘x’) – R# + A#
DMC_SC_V:L_Y = VAL(‘y’) – R# + A#
DMC_SC_V:L_Z = VAL(‘z’) – R# + A#
DMC_SC_V:L_AC = VAL(‘A’) – R# + A#
DMC_SC_V:L_BC = VAL(‘B’) – R# + A#
DMC_SC_V:L_CC = VAL(‘C’) – R# + A#
DMC_SC_V:L_DC = VAL(‘D’) – R# + A#
DMC_SC_V:L_EC = VAL(‘E’) – R# + A#
DMC_SC_V:L_FC = VAL(‘F’) – R# + A#
DMC_SC_V:L_GC = VAL(‘G’) – R# + A#
DMC_SC_V:L_HC = VAL(‘H’) – R# + A#
DMC_SC_V:L_IC = VAL(‘I’) – R# + A#
DMC_SC_V:L_JC = VAL(‘J’) – R# + A#
DMC_SC_V:L_KC = VAL(‘K’) – R# + A#
DMC_SC_V:L_LC = VAL(‘L’) – R# + A#
DMC_SC_V:L_MC = VAL(‘M’) – R# + A#
DMC_SC_V:L_NC = VAL(‘N’) – R# + A#
DMC_SC_V:L_OC = VAL(‘O’) – R# + A#
DMC_SC_V:L_PC = VAL(‘P’) – R# + A#
DMC_SC_V:L_QC = VAL(‘Q’) – R# + A#
DMC_SC_V:L_RC = VAL(‘R’) – R# + A#
DMC_SC_V:L_SC = VAL(‘S’) – R# + A#
DMC_SC_V:L_TC = VAL(‘T’) – R# + A#
DMC_SC_V:L_UC = VAL(‘U’) – R# + A#
DMC_SC_V:L_VC = VAL(‘V’) – R# + A#
DMC_SC_V:L_WC = VAL(‘W’) – R# + A#
DMC_SC_V:L_XC = VAL(‘X’) – R# + A#
DMC_SC_V:L_YC = VAL(‘Y’) – R# + A#
DMC_SC_V:L_ZC = VAL(‘Z’) – R# + A#

Char_A  = CHR(DMC_SC_V:L_A)
Char_B  = CHR(DMC_SC_V:L_B)
Char_C  = CHR(DMC_SC_V:L_C)
Char_D  = CHR(DMC_SC_V:L_D)
Char_E  = CHR(DMC_SC_V:L_E)
Char_F  = CHR(DMC_SC_V:L_F)
Char_G  = CHR(DMC_SC_V:L_G)
Char_H  = CHR(DMC_SC_V:L_H)
Char_I  = CHR(DMC_SC_V:L_I)
Char_J  = CHR(DMC_SC_V:L_J)
Char_K  = CHR(DMC_SC_V:L_K)
Char_L  = CHR(DMC_SC_V:L_L)
Char_M  = CHR(DMC_SC_V:L_M)
Char_N  = CHR(DMC_SC_V:L_N)
Char_O  = CHR(DMC_SC_V:L_O)
Char_P  = CHR(DMC_SC_V:L_P)
Char_Q  = CHR(DMC_SC_V:L_Q)
Char_R  = CHR(DMC_SC_V:L_R)
Char_S  = CHR(DMC_SC_V:L_S)
Char_T  = CHR(DMC_SC_V:L_T)
Char_U  = CHR(DMC_SC_V:L_U)
Char_V  = CHR(DMC_SC_V:L_V)
Char_W  = CHR(DMC_SC_V:L_W)
Char_X  = CHR(DMC_SC_V:L_X)
Char_Y  = CHR(DMC_SC_V:L_Y)
Char_Z  = CHR(DMC_SC_V:L_Z)
Char_AC  = CHR(DMC_SC_V:L_AC)
Char_BC  = CHR(DMC_SC_V:L_BC)
Char_CC  = CHR(DMC_SC_V:L_CC)
Char_DC  = CHR(DMC_SC_V:L_DC)
Char_EC  = CHR(DMC_SC_V:L_EC)
Char_FC  = CHR(DMC_SC_V:L_FC)
Char_GC  = CHR(DMC_SC_V:L_GC)
Char_HC  = CHR(DMC_SC_V:L_HC)
Char_IC  = CHR(DMC_SC_V:L_IC)
Char_JC  = CHR(DMC_SC_V:L_JC)
Char_KC  = CHR(DMC_SC_V:L_KC)
Char_LC  = CHR(DMC_SC_V:L_LC)
Char_MC  = CHR(DMC_SC_V:L_MC)
Char_NC  = CHR(DMC_SC_V:L_NC)
Char_OC  = CHR(DMC_SC_V:L_OC)
Char_PC  = CHR(DMC_SC_V:L_PC)
Char_QC  = CHR(DMC_SC_V:L_QC)
Char_RC  = CHR(DMC_SC_V:L_RC)
Char_SC  = CHR(DMC_SC_V:L_SC)
Char_TC  = CHR(DMC_SC_V:L_TC)
Char_UC  = CHR(DMC_SC_V:L_UC)
Char_VC  = CHR(DMC_SC_V:L_VC)
Char_WC  = CHR(DMC_SC_V:L_WC)
Char_XC  = CHR(DMC_SC_V:L_XC)
Char_YC  = CHR(DMC_SC_V:L_YC)
Char_ZC  = CHR(DMC_SC_V:L_ZC)
Char_Driver1  = ‘MySQL ODBC’
Char_Driver2  = ’3.51 Driver’
END
! ————————– End Procedure ————————– !

which means that in code you will use for example this :

GLO:Connection = Char_D & Char_R & Char_I & Char_V & Char_E & Char_R & ‘=’ & DMC_SQLP:DRIVER_1 & ‘ ‘ & DMC_SQLP:DRIVER_2 & ‘;’ |
& Char_S & Char_E & Char_R & Char_V & Char_E & Char_R & ‘=’ & DMC_SQLP:IP_1 & ‘.’ & DMC_SQLP:IP_2 & ‘.’ & DMC_SQLP:IP_3 & ‘.’ & DMC_SQLP:IP_4 & ‘;’ |
& Char_U & Char_S & Char_E & Char_R & ‘=’ & DMC_SQLP:USER_1 & ‘_’ & DMC_SQLP:USER_2 & ‘;’ |
& Char_P & Char_W & Char_D & ‘=’ & DMC_SQLP:PWD_1 & DMC_SQLP:PWD_2 & DMC_SQLP:PWD_3 & ‘;’ |
& Char_D & Char_A & Char_T & Char_A & Char_B & Char_A & Char_S & Char_E & ‘=’ & DMC_SQLP:DB_1 & ‘_’ & DMC_SQLP:DB_2 & ‘;’ |
& Char_P & Char_O & Char_R & Char_T & ‘=’ & 3306 & ‘;’

as you can “read” from this it “comes to ” this (the server and driver portions are also “split in “portions”) :
Driver=xxxxxxxxxxx;server=xxxxxxxxxxxx;uid=xxxxxx;pwd=xxxxxxxxxx;database=xxxxxxxxxx;port=xxxx;

which is what clarion awaits BUT when openeing the exe in HEX NOTHING is VISIBLE ;)

Another technique is to use calculations to “create” your “long” portion of a password :

2515 can be stored as

MyPassword = 5*5 & 3*5 (into a string)

Do the same for your TPS passwords and your SQL queries and you can start sleeping soundly!

JP

Posted By: JP (DMC)
Last Edit: 19 Mar 2012 @ 11:46 AM

EmailPermalinkComments (0)
Tags
Categories: Clarion Tips

 20 Feb 2012 @ 11:12 AM 

1. Browse a local tps on Personne or Customer tables
2. Browse a distant sql table on Personne or Customer

The structures are identical

You have an Option with RADIO buttons to select :
1. Distant MsSQL
2. Distant MySQL
3. Distant PostgreSQL

This enables you to switch from any sql server to another simply by selecting the proper “falvor” dynamicaly

If you select (any) sql distant “Personne” table and open any record (update form) you will see two buttons and lists :

1. perform an sql query on the same table
2. perform an sql query on another table (table Customers)

The two lists will be updated for you

All the code is there for you to see HowToDo all this in clarion and sql language using the “dummy table” technique

Enjoy

www.dmc-fr.com/programme/dmcsqldemoc6.zip
www.dmc-fr.com/programme/dmcsqldemoc7.zip

all source code with APP DCT & TXA TPS files and running exe

Posted By: JP (DMC)
Last Edit: 16 Mar 2012 @ 12:42 AM

EmailPermalinkComments (0)
Tags
Categories: Clarion Tips

 14 Feb 2012 @ 10:44 AM 

I discovered today we can disconnect from an SQL dataBase (even if only connected through a DummyTable SHARE or OPEN(File) then a CLOSE(File) with this type of code :

!———————————————————-!
! Disconnect(STRING sConnection) !,BYTE
!———————————————————-!

cDMC_SQL.Disconnect                     PROCEDURE(STRING sConnection) !,BYTE
fSQL                            FILE,DRIVER(‘ODBC’,'/TURBOSQL=TRUE’),PRE(ODBC),BINDABLE,THREAD
Record                            RECORD
END ! record
END ! file

eMethodName                     EQUATE(‘.Disconnect ‘)
bErrorLevel                     BYTE
CODE

? SELF.Trace(eMethodName)
LOOP 1 TIMES
bErrorLevel = LEVEL:Benign

SELF.SetConnectString()

fSQL{PROP:Owner} = sConnection

CLOSE(fSQL)
SHARE(fSQL)
IF ERRORCODE() AND ERRORCODE() <> 52
bErrorLevel = SELF.SetLastError(‘An error occurred opening the SQL file.  The error is: ‘ & |
ERRORCODE()     & ‘ – ‘ & CLIP(ERROR())     & |
‘<13,10>’                                   & |
FILEERRORCODE() & ‘ – ‘ & CLIP(FILEERROR()))
BREAK
END ! if

CLOSE(fSQL)
fSQL{PROP:Disconnect} ! This clarion command does it all ————————————————— !
IF ERRORCODE()
bErrorLevel = SELF.SetLastError(fSQL)
BREAK
END ! if
END

? SELF.Trace(eMethodName & ‘Done’)

RETURN bErrorLevel

This allows you to entirely disconnect from ANY DataBase simply by passing the ConnectionString ;)

JP

Posted By: JP (DMC)
Last Edit: 14 Feb 2012 @ 10:44 AM

EmailPermalinkComments (0)
Tags
Categories: Clarion Tips

 13 Feb 2012 @ 4:47 PM 

Or adding a column or deleting a key etc ….

Anything can be done very easily with the dummy table technique :

In DATA section of a source procedure (for example) add this Dummytable Structure
fListTablesSQL            FILE,DRIVER(‘ODBC’,'/TURBOSQL=TRUE’),PRE(fListTablesSQL),BINDABLE,THREAD
Record                            RECORD
Table_Query                      STRING(2048)
END ! record
END ! file

In CODE section use this code (for example to CREATE a table) :
fListTablesSQL{PROP:Owner} = SELF.szConnectString ! your connection string here
! example of MsSQL connection string :
!Driver=SQL Server Native Client 10.0;server=xxx.xxx.xxx.xxx\SQLExpress2008R2;uid=sa;pwd=xxxxxxxx@;database=dmc_demo;
! This example is for sql 2008 on a distant server – thus the IP
! if on a localhost replace the IP with the WINDOWS machine name

SHARE(fListTablesSQL)

szSQLViews = ‘CREATE TABLE [dbo].[AnimalsTest] ( [ANIMALID] int NOT NULL );’

fListTablesSQL{PROP:SQL} = szSQLViews

! NEXT(fListTablesSQL)  – this NEXT command is NOT needed except if you are using a LOOP statement to receive infos
CLOSE(fListTablesSQL)

That is all there is to it ;)

IMPORTANT : when “sending” queries this dummy table structure will do
when “receiving infos” (querying the server) – then the dummy table structure MUST MATCH perfectly the infos the SERVER will send you on column data types and the order of the columns
some use a completely dumb <g> dummy table for 10/20/30 strings and then do some high level acrobatics to match cols …. I prefer in code creating a NEW dummy table where the structure MATCHES the result I expect

Enjoy

Posted By: JP (DMC)
Last Edit: 13 Feb 2012 @ 06:05 PM

EmailPermalinkComments (0)
Tags
Categories: Clarion Tips

 05 Jan 2012 @ 1:44 PM 

The DMC Software Recommendation Plan is a comprehensive program that allows existing registered DMC users to extend their protection period with FREE Software Maintenance.

All DMC licence holders with a valid current SMP can participate in the Software Recommendation Plan in 2 simple steps :

1. Recommend DMC to a friend.

2. Ask him to mention your NAME in the onsite “Message box” on the payment page when he order’s DMC.

You will receive a FREE extension period of SIX MONTHS and save from 60 USD to 75 USD

(this applies to NEW purchases of DMC Enterprise or Runtime Engine ONLY)

Extended Protection Period:

The protection period you win will be ADDED to your existing Software Maintenance Plan.

For each purchase of DMC done on your recommendation your protection period will be extended accordingly.

Each time you recommend DMC to a friend you lower your cost of Software Maintenance Plan.

Posted By: JP (DMC)
Last Edit: 05 Jan 2012 @ 01:44 PM

EmailPermalinkComments (0)
Tags
Categories: News

 05 Jan 2012 @ 1:41 PM 

We are pleased to introduce today a NEW way of purchasing DMC :
________________________________________
Software Maintenance Plan is a new “pricing policy” launched in January 2012.
Software Maintenance Plan is a subscription service added to your existing license and current SMP, whereas an upgrade license is a one off (allowing you to renew your expired old MP or SMP for 1 year).
Software Maintenance is bought on a yearly basis and once bought, customers will be protected for all upgrades on any release, as well as enjoying our priority email support.
Upgrade License is for customers who did not subscribe to our software maintenance plan or who let their old MP or SMP expire but want to upgrade their license to the latest release and also enjoy a 1year SMP.
The upgrade license price is 50% of the new license price, whereas for Software Maintenance Plan it is as low as 25% of the license price.
________________________________________

To renew your software maintenance subscription, please login to our Customer Center and click on “Renewal” under the Product Summary section.
To see all these new prices please visit this page. As a comparison with the old prices : the Enterprise level 1 year renewal is lowered by 20 % (saving you nearly 30$) and the Runtime Engine one is at the same price (unchanged since over 18 months)!
Please kindly be reminded that renewal of Software Maintenance subscription cannot be done after the expiry date. **
** : an “extension delay” of 15 days is allowed onsite after your actual expiration date. This provides a bit of flexibility where a person might be on vacation or away when the renewal is due.
What’s included in the Maintenance Plan?
• All Major/Minor Software Release and bug fix releases that are released during the protection period.
• Priority Email Technical Support (support@dmc-fr.com): DMC’s professionals will respond within 1-2 business days during APAC business hours (Monday – Friday, 9am – 7pm GMT+1).
• Live Chat Skype Support : DMC’s professionals are present to help you throughout the APAC business hours (Monday – Friday, 9am – 7pm GMT+1).
• Remote Desktop connection to your machine (Team Viewer) (limited to 30 minutes) to help you sort out any problem you may have with DMC during the APAC business hours (Monday – Friday, 9am – 7pm GMT+1).
Is the subscription to Maintenance Plan mandatory?
Subscription to our software maintenance is not mandatory. However, we do ask for your consideration as subscribing to the Software Maintenance Plan not only allows you to receive priority email and skype support or Remote Desktop connection support, but also help you saving your cost on acquiring the latest version of DMC. An Upgrade License of DMC costs 50% of the product price, while price of Software Maintenance is as low as 25% of the product price, allowing you to get free major/minor software release without any additional cost.
For more information about DMC Software Maintenance Plan and FAQs, please visit our DMC Software Maintenance Plan page.
Thank you for choosing DMC!

Posted By: JP (DMC)
Last Edit: 05 Jan 2012 @ 01:42 PM

EmailPermalinkComments (0)
Tags
Categories: News

 10 Nov 2011 @ 5:45 PM 

For all who are “into” clarion7/8 :

I had to change my motherboard as it was starting to show signs of weakness (LAN connectors)

I had a supermicro dual opteron dual cores with 2×2.8 ghz. cpu’s and 16 gb ram ddr2 at 667.

I changed it for an asus motherboard with one Intel cpu 4×3.4 ghz. and again 16 gb ram but ddr3 at 1333.

(same HD “chain with the areca controller card and my 12 raptors in raid6)

1. Opening my app takes LESS time and is quasi instantanuous
2. Reading AND storing ABC files (whatever is done during this time) is down to UNDER 4 seconds when it took around 11 seconds on the old motherboard.
3. Compiling the entire application takes roughly HALF as long as it did on the old motherboard

This confirms what I have always thought and said : clarion 7/8 is VERY “ressource” demanding, so the faster your
CPU
RAM
are the faster you will be able to work

For me now it becomes more of a pleasure to use clarion8

EVEN code completion and parsing can NOW be turned ON

My main procedure is still slightly noticable the first time I enter it whil it builds the PWEE but it is then absolutely “usable” whereas it was NOT with the old motherboard (and RAM)

My conclusion is simple : if you do not have the latest and fastest RAM and CPU ….. well I lived hapily with it for two years

Posted By: JP (DMC)
Last Edit: 10 Nov 2011 @ 05:45 PM

EmailPermalinkComments (0)
Tags
Categories: Clarion Tips

 29 Aug 2011 @ 10:04 AM 

In DMC SQL settings select and define your destination folder
(this is where DMC will copy the necessary files for you to use as a “new” folder for your SQL application)

Both DCT (created from generated DCTX) and generated TXA’s) should be in the same folder (your “destination” folder) and are copied there for you by DMC

Do not create an empty app to import the generated TXA

1. From Start Page click on “New solution”

2. Select  Clarion for Windows

3. Select “Application from TXA”

4. Location is the folder containing the DCT and the generated TXA

5. Name is what you want it to be

6. Do NOT check the “Auto create project subdir”

7. When prompted for a TXA select the DMC generated one

Posted By: JP (DMC)
Last Edit: 29 Aug 2011 @ 10:04 AM

EmailPermalinkComments (0)
Tags
Categories: FAQ's & Tips





 Last 50 Posts
 Back
Change Theme...
  • Users » 1
  • Posts/Pages » 34
  • Comments » 32
Change Theme...
  • VoidVoid « Default
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater
  • FireFire
  • LightLight