What is Dev-Type

Applications, Games, Tools, User libs and useful stuff coded in PureBasic
User avatar
Guimauve
Enthusiast
Enthusiast
Posts: 742
Joined: Wed Oct 22, 2003 2:51 am
Location: Canada

What is Dev-Type

Post by Guimauve »

Hello everyone,

I have receive question from some users about I small tool formally known as "Dev-Type". To be as simple as possible, it's a small program capable to generate macros and procedure to manipulate user defined structures.

For example you work on a project and you have chosen to use a structure to store some information about "Employee"

Code: Select all

Structure Employee

  PrimaryKeyID.l
  LoginName.s
  LoginPassword.s
  Type.l
  Rights.l
  FirstName.s
  LastName.s
  NumberID.l
  TownName.s
  CivicNumber.s
  StreetName.s
  ZipPostalCode.s
  Email.s
  PhoneNumber01.s
  PhoneNumbe
  Comments.s

EndStructure
Want to save this structure in a XML file, Preferences file, Binary file and why not inside a Database. How long it take to write the source code to do all of this stuff ? Don't waste your time, the computer can do it for you at incredible speed :

Code: Select all

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; AUTOMATICALLY GENERATED CODE, DO NOT MODIFY
; UNLESS YOU REALLY, REALLY, REALLY MEAN IT !!
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Code generated by : Dev-Type V4.0.0
; Project name : the project name here
; File name : File name here
; File Version : 0.0.0
; Programmation : In progress
; Programmed by : Guimauve
; Creation Date : 27-01-2013
; Last update : 27-01-2013
; Coded for : PureBasic 5.10 Beta 5
; Platform : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Structure declaration <<<<<

Structure Employee

  PrimaryKeyID.l
  LoginName.s
  LoginPassword.s
  Type.l
  Rights.l
  FirstName.s
  LastName.s
  NumberID.l
  TownName.s
  CivicNumber.s
  StreetName.s
  ZipPostalCode.s
  Email.s
  PhoneNumber01.s
  PhoneNumber02.s
  Comments.s

EndStructure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The observators <<<<<

Macro GetEmployeePrimaryKeyID(EmployeeA)
  
  EmployeeA\PrimaryKeyID
  
EndMacro

Macro GetEmployeeLoginName(EmployeeA)
  
  EmployeeA\LoginName
  
EndMacro

Macro GetEmployeeLoginPassword(EmployeeA)
  
  EmployeeA\LoginPassword
  
EndMacro

Macro GetEmployeeType(EmployeeA)
  
  EmployeeA\Type
  
EndMacro

Macro GetEmployeeRights(EmployeeA)
  
  EmployeeA\Rights
  
EndMacro

Macro GetEmployeeFirstName(EmployeeA)
  
  EmployeeA\FirstName
  
EndMacro

Macro GetEmployeeLastName(EmployeeA)
  
  EmployeeA\LastName
  
EndMacro

Macro GetEmployeeNumberID(EmployeeA)
  
  EmployeeA\NumberID
  
EndMacro

Macro GetEmployeeTownName(EmployeeA)
  
  EmployeeA\TownName
  
EndMacro

Macro GetEmployeeCivicNumber(EmployeeA)
  
  EmployeeA\CivicNumber
  
EndMacro

Macro GetEmployeeStreetName(EmployeeA)
  
  EmployeeA\StreetName
  
EndMacro

Macro GetEmployeeZipPostalCode(EmployeeA)
  
  EmployeeA\ZipPostalCode
  
EndMacro

Macro GetEmployeeEmail(EmployeeA)
  
  EmployeeA\Email
  
EndMacro

Macro GetEmployeePhoneNumber01(EmployeeA)
  
  EmployeeA\PhoneNumber01
  
EndMacro

Macro GetEmployeePhoneNumber02(EmployeeA)
  
  EmployeeA\PhoneNumber02
  
EndMacro

Macro GetEmployeeComments(EmployeeA)
  
  EmployeeA\Comments
  
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The mutators <<<<<

Macro SetEmployeePrimaryKeyID(EmployeeA, P_PrimaryKeyID)
  
  GetEmployeePrimaryKeyID(EmployeeA) = P_PrimaryKeyID
  
EndMacro

Macro SetEmployeeLoginName(EmployeeA, P_LoginName)
  
  GetEmployeeLoginName(EmployeeA) = P_LoginName
  
EndMacro

Macro SetEmployeeLoginPassword(EmployeeA, P_LoginPassword)
  
  GetEmployeeLoginPassword(EmployeeA) = P_LoginPassword
  
EndMacro

Macro SetEmployeeType(EmployeeA, P_Type)
  
  GetEmployeeType(EmployeeA) = P_Type
  
EndMacro

Macro SetEmployeeRights(EmployeeA, P_Rights)
  
  GetEmployeeRights(EmployeeA) = P_Rights
  
EndMacro

Macro SetEmployeeFirstName(EmployeeA, P_FirstName)
  
  GetEmployeeFirstName(EmployeeA) = P_FirstName
  
EndMacro

Macro SetEmployeeLastName(EmployeeA, P_LastName)
  
  GetEmployeeLastName(EmployeeA) = P_LastName
  
EndMacro

Macro SetEmployeeNumberID(EmployeeA, P_NumberID)
  
  GetEmployeeNumberID(EmployeeA) = P_NumberID
  
EndMacro

Macro SetEmployeeTownName(EmployeeA, P_TownName)
  
  GetEmployeeTownName(EmployeeA) = P_TownName
  
EndMacro

Macro SetEmployeeCivicNumber(EmployeeA, P_CivicNumber)
  
  GetEmployeeCivicNumber(EmployeeA) = P_CivicNumber
  
EndMacro

Macro SetEmployeeStreetName(EmployeeA, P_StreetName)
  
  GetEmployeeStreetName(EmployeeA) = P_StreetName
  
EndMacro

Macro SetEmployeeZipPostalCode(EmployeeA, P_ZipPostalCode)
  
  GetEmployeeZipPostalCode(EmployeeA) = P_ZipPostalCode
  
EndMacro

Macro SetEmployeeEmail(EmployeeA, P_Email)
  
  GetEmployeeEmail(EmployeeA) = P_Email
  
EndMacro

Macro SetEmployeePhoneNumber01(EmployeeA, P_PhoneNumber01)
  
  GetEmployeePhoneNumber01(EmployeeA) = P_PhoneNumber01
  
EndMacro

Macro SetEmployeePhoneNumber02(EmployeeA, P_PhoneNumber02)
  
  GetEmployeePhoneNumber02(EmployeeA) = P_PhoneNumber02
  
EndMacro

Macro SetEmployeeComments(EmployeeA, P_Comments)
  
  GetEmployeeComments(EmployeeA) = P_Comments
  
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Reset operator <<<<<

Macro ResetEmployee(EmployeeA)
 
  SetEmployeePrimaryKeyID(EmployeeA, 0)
  SetEmployeeLoginName(EmployeeA, "")
  SetEmployeeLoginPassword(EmployeeA, "")
  SetEmployeeType(EmployeeA, 0)
  SetEmployeeRights(EmployeeA, 0)
  SetEmployeeFirstName(EmployeeA, "")
  SetEmployeeLastName(EmployeeA, "")
  SetEmployeeNumberID(EmployeeA, 0)
  SetEmployeeTownName(EmployeeA, "")
  SetEmployeeCivicNumber(EmployeeA, "")
  SetEmployeeStreetName(EmployeeA, "")
  SetEmployeeZipPostalCode(EmployeeA, "")
  SetEmployeeEmail(EmployeeA, "")
  SetEmployeePhoneNumber01(EmployeeA, "")
  SetEmployeePhoneNumber02(EmployeeA, "")
  SetEmployeeComments(EmployeeA, "")
  
  ; ClearStructure(EmployeeA, Employee)

EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Copy operator : A = Source : B = Destination <<<<<

Macro CopyEmployee(EmployeeA, EmployeeB)
 
  SetEmployeePrimaryKeyID(EmployeeB, GetEmployeePrimaryKeyID(EmployeeA))
  SetEmployeeLoginName(EmployeeB, GetEmployeeLoginName(EmployeeA))
  SetEmployeeLoginPassword(EmployeeB, GetEmployeeLoginPassword(EmployeeA))
  SetEmployeeType(EmployeeB, GetEmployeeType(EmployeeA))
  SetEmployeeRights(EmployeeB, GetEmployeeRights(EmployeeA))
  SetEmployeeFirstName(EmployeeB, GetEmployeeFirstName(EmployeeA))
  SetEmployeeLastName(EmployeeB, GetEmployeeLastName(EmployeeA))
  SetEmployeeNumberID(EmployeeB, GetEmployeeNumberID(EmployeeA))
  SetEmployeeTownName(EmployeeB, GetEmployeeTownName(EmployeeA))
  SetEmployeeCivicNumber(EmployeeB, GetEmployeeCivicNumber(EmployeeA))
  SetEmployeeStreetName(EmployeeB, GetEmployeeStreetName(EmployeeA))
  SetEmployeeZipPostalCode(EmployeeB, GetEmployeeZipPostalCode(EmployeeA))
  SetEmployeeEmail(EmployeeB, GetEmployeeEmail(EmployeeA))
  SetEmployeePhoneNumber01(EmployeeB, GetEmployeePhoneNumber01(EmployeeA))
  SetEmployeePhoneNumber02(EmployeeB, GetEmployeePhoneNumber02(EmployeeA))
  SetEmployeeComments(EmployeeB, GetEmployeeComments(EmployeeA))
  
  ; CopyMemory(EmployeeA, EmployeeB, SizeOf(Employee))

EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Compare operator <<<<<

Procedure.b CompareEmployee(*EmployeeA.Employee, *EmployeeB.Employee)
 
  If GetEmployeePrimaryKeyID(*EmployeeA) <> GetEmployeePrimaryKeyID(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeLoginName(*EmployeeA) <> GetEmployeeLoginName(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeLoginPassword(*EmployeeA) <> GetEmployeeLoginPassword(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeType(*EmployeeA) <> GetEmployeeType(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeRights(*EmployeeA) <> GetEmployeeRights(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeFirstName(*EmployeeA) <> GetEmployeeFirstName(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeLastName(*EmployeeA) <> GetEmployeeLastName(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeNumberID(*EmployeeA) <> GetEmployeeNumberID(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeTownName(*EmployeeA) <> GetEmployeeTownName(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeCivicNumber(*EmployeeA) <> GetEmployeeCivicNumber(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeStreetName(*EmployeeA) <> GetEmployeeStreetName(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeZipPostalCode(*EmployeeA) <> GetEmployeeZipPostalCode(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeEmail(*EmployeeA) <> GetEmployeeEmail(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeePhoneNumber01(*EmployeeA) <> GetEmployeePhoneNumber01(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeePhoneNumber02(*EmployeeA) <> GetEmployeePhoneNumber02(*EmployeeB)
    ProcedureReturn #False
  EndIf
 
  If GetEmployeeComments(*EmployeeA) <> GetEmployeeComments(*EmployeeB)
    ProcedureReturn #False
  EndIf
  
  ProcedureReturn #True
EndProcedure

; Macro CompareEmployee(EmployeeA, EmployeeB)
  ; CompareMemory(EmployeeA, EmployeeB, SizeOf(Employee))
; EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Swap operator <<<<<

Macro SwapEmployee(EmployeeA, EmployeeB)

  Swap GetEmployeePrimaryKeyID(EmployeeA), GetEmployeePrimaryKeyID(EmployeeB)
  Swap GetEmployeeLoginName(EmployeeA), GetEmployeeLoginName(EmployeeB)
  Swap GetEmployeeLoginPassword(EmployeeA), GetEmployeeLoginPassword(EmployeeB)
  Swap GetEmployeeType(EmployeeA), GetEmployeeType(EmployeeB)
  Swap GetEmployeeRights(EmployeeA), GetEmployeeRights(EmployeeB)
  Swap GetEmployeeFirstName(EmployeeA), GetEmployeeFirstName(EmployeeB)
  Swap GetEmployeeLastName(EmployeeA), GetEmployeeLastName(EmployeeB)
  Swap GetEmployeeNumberID(EmployeeA), GetEmployeeNumberID(EmployeeB)
  Swap GetEmployeeTownName(EmployeeA), GetEmployeeTownName(EmployeeB)
  Swap GetEmployeeCivicNumber(EmployeeA), GetEmployeeCivicNumber(EmployeeB)
  Swap GetEmployeeStreetName(EmployeeA), GetEmployeeStreetName(EmployeeB)
  Swap GetEmployeeZipPostalCode(EmployeeA), GetEmployeeZipPostalCode(EmployeeB)
  Swap GetEmployeeEmail(EmployeeA), GetEmployeeEmail(EmployeeB)
  Swap GetEmployeePhoneNumber01(EmployeeA), GetEmployeePhoneNumber01(EmployeeB)
  Swap GetEmployeePhoneNumber02(EmployeeA), GetEmployeePhoneNumber02(EmployeeB)
  Swap GetEmployeeComments(EmployeeA), GetEmployeeComments(EmployeeB)
  
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Read preferences group  <<<<<

Procedure ReadPreferenceEmployee(GroupName.s, *EmployeeA.Employee)

  PreferenceGroup(GroupName)
 
  SetEmployeePrimaryKeyID(*EmployeeA, ReadPreferenceLong("PrimaryKeyID", GetEmployeePrimaryKeyID(*EmployeeA)))
  SetEmployeeLoginName(*EmployeeA, ReadPreferenceString("LoginName", GetEmployeeLoginName(*EmployeeA)))
  SetEmployeeLoginPassword(*EmployeeA, ReadPreferenceString("LoginPassword", GetEmployeeLoginPassword(*EmployeeA)))
  SetEmployeeType(*EmployeeA, ReadPreferenceLong("Type", GetEmployeeType(*EmployeeA)))
  SetEmployeeRights(*EmployeeA, ReadPreferenceLong("Rights", GetEmployeeRights(*EmployeeA)))
  SetEmployeeFirstName(*EmployeeA, ReadPreferenceString("FirstName", GetEmployeeFirstName(*EmployeeA)))
  SetEmployeeLastName(*EmployeeA, ReadPreferenceString("LastName", GetEmployeeLastName(*EmployeeA)))
  SetEmployeeNumberID(*EmployeeA, ReadPreferenceLong("NumberID", GetEmployeeNumberID(*EmployeeA)))
  SetEmployeeTownName(*EmployeeA, ReadPreferenceString("TownName", GetEmployeeTownName(*EmployeeA)))
  SetEmployeeCivicNumber(*EmployeeA, ReadPreferenceString("CivicNumber", GetEmployeeCivicNumber(*EmployeeA)))
  SetEmployeeStreetName(*EmployeeA, ReadPreferenceString("StreetName", GetEmployeeStreetName(*EmployeeA)))
  SetEmployeeZipPostalCode(*EmployeeA, ReadPreferenceString("ZipPostalCode", GetEmployeeZipPostalCode(*EmployeeA)))
  SetEmployeeEmail(*EmployeeA, ReadPreferenceString("Email", GetEmployeeEmail(*EmployeeA)))
  SetEmployeePhoneNumber01(*EmployeeA, ReadPreferenceString("PhoneNumber01", GetEmployeePhoneNumber01(*EmployeeA)))
  SetEmployeePhoneNumber02(*EmployeeA, ReadPreferenceString("PhoneNumber02", GetEmployeePhoneNumber02(*EmployeeA)))
  SetEmployeeComments(*EmployeeA, ReadPreferenceString("Comments", GetEmployeeComments(*EmployeeA)))
  
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Write preferences group <<<<<

Procedure WritePreferenceEmployee(GroupName.s, *EmployeeA.Employee)

  PreferenceGroup(GroupName)
 
  WritePreferenceLong("PrimaryKeyID", GetEmployeePrimaryKeyID(*EmployeeA))
  WritePreferenceString("LoginName", GetEmployeeLoginName(*EmployeeA))
  WritePreferenceString("LoginPassword", GetEmployeeLoginPassword(*EmployeeA))
  WritePreferenceLong("Type", GetEmployeeType(*EmployeeA))
  WritePreferenceLong("Rights", GetEmployeeRights(*EmployeeA))
  WritePreferenceString("FirstName", GetEmployeeFirstName(*EmployeeA))
  WritePreferenceString("LastName", GetEmployeeLastName(*EmployeeA))
  WritePreferenceLong("NumberID", GetEmployeeNumberID(*EmployeeA))
  WritePreferenceString("TownName", GetEmployeeTownName(*EmployeeA))
  WritePreferenceString("CivicNumber", GetEmployeeCivicNumber(*EmployeeA))
  WritePreferenceString("StreetName", GetEmployeeStreetName(*EmployeeA))
  WritePreferenceString("ZipPostalCode", GetEmployeeZipPostalCode(*EmployeeA))
  WritePreferenceString("Email", GetEmployeeEmail(*EmployeeA))
  WritePreferenceString("PhoneNumber01", GetEmployeePhoneNumber01(*EmployeeA))
  WritePreferenceString("PhoneNumber02", GetEmployeePhoneNumber02(*EmployeeA))
  WritePreferenceString("Comments", GetEmployeeComments(*EmployeeA))
  
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Read in Binary file <<<<<

Procedure ReadEmployee(FileID.l, *EmployeeA.Employee)
 
  SetEmployeePrimaryKeyID(*EmployeeA, ReadLong(FileID))
  SetEmployeeLoginName(*EmployeeA, ReadString(FileID))
  SetEmployeeLoginPassword(*EmployeeA, ReadString(FileID))
  SetEmployeeType(*EmployeeA, ReadLong(FileID))
  SetEmployeeRights(*EmployeeA, ReadLong(FileID))
  SetEmployeeFirstName(*EmployeeA, ReadString(FileID))
  SetEmployeeLastName(*EmployeeA, ReadString(FileID))
  SetEmployeeNumberID(*EmployeeA, ReadLong(FileID))
  SetEmployeeTownName(*EmployeeA, ReadString(FileID))
  SetEmployeeCivicNumber(*EmployeeA, ReadString(FileID))
  SetEmployeeStreetName(*EmployeeA, ReadString(FileID))
  SetEmployeeZipPostalCode(*EmployeeA, ReadString(FileID))
  SetEmployeeEmail(*EmployeeA, ReadString(FileID))
  SetEmployeePhoneNumber01(*EmployeeA, ReadString(FileID))
  SetEmployeePhoneNumber02(*EmployeeA, ReadString(FileID))
  SetEmployeeComments(*EmployeeA, ReadString(FileID))
  
EndProcedure

; Macro ReadEmployee(FileID, EmployeeA)
  ; ReadData(FileID, EmployeeA, SizeOf(Employee))
; EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Write in Binary file <<<<<

Procedure WriteEmployee(FileID.l, *EmployeeA.Employee)
 
  WriteLong(FileID, GetEmployeePrimaryKeyID(*EmployeeA))
  WriteStringN(FileID, GetEmployeeLoginName(*EmployeeA))
  WriteStringN(FileID, GetEmployeeLoginPassword(*EmployeeA))
  WriteLong(FileID, GetEmployeeType(*EmployeeA))
  WriteLong(FileID, GetEmployeeRights(*EmployeeA))
  WriteStringN(FileID, GetEmployeeFirstName(*EmployeeA))
  WriteStringN(FileID, GetEmployeeLastName(*EmployeeA))
  WriteLong(FileID, GetEmployeeNumberID(*EmployeeA))
  WriteStringN(FileID, GetEmployeeTownName(*EmployeeA))
  WriteStringN(FileID, GetEmployeeCivicNumber(*EmployeeA))
  WriteStringN(FileID, GetEmployeeStreetName(*EmployeeA))
  WriteStringN(FileID, GetEmployeeZipPostalCode(*EmployeeA))
  WriteStringN(FileID, GetEmployeeEmail(*EmployeeA))
  WriteStringN(FileID, GetEmployeePhoneNumber01(*EmployeeA))
  WriteStringN(FileID, GetEmployeePhoneNumber02(*EmployeeA))
  WriteStringN(FileID, GetEmployeeComments(*EmployeeA))
  
EndProcedure

; Macro WriteEmployee(FileID, EmployeeA)
  ; WriteData(FileID, EmployeeA, SizeOf(Employee))
; EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Set - Node with child nodes <<<<<

Procedure SetEmployeeXMLNode(CurrentNode, *EmployeeA.Employee)

  If ParentXMLNode(CurrentNode) = #Null
    StructNode = CreateXMLNode(CurrentNode)
    SetXMLNodeName(StructNode, "Employee")
  Else
    StructNode = CurrentNode
  EndIf
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "PrimaryKeyID")
  SetXMLNodeText(FieldNode, Str(GetEmployeePrimaryKeyID(*EmployeeA)))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "LoginName")
  SetXMLNodeText(FieldNode, GetEmployeeLoginName(*EmployeeA))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "LoginPassword")
  SetXMLNodeText(FieldNode, GetEmployeeLoginPassword(*EmployeeA))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "Type")
  SetXMLNodeText(FieldNode, Str(GetEmployeeType(*EmployeeA)))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "Rights")
  SetXMLNodeText(FieldNode, Str(GetEmployeeRights(*EmployeeA)))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "FirstName")
  SetXMLNodeText(FieldNode, GetEmployeeFirstName(*EmployeeA))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "LastName")
  SetXMLNodeText(FieldNode, GetEmployeeLastName(*EmployeeA))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "NumberID")
  SetXMLNodeText(FieldNode, Str(GetEmployeeNumberID(*EmployeeA)))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "TownName")
  SetXMLNodeText(FieldNode, GetEmployeeTownName(*EmployeeA))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "CivicNumber")
  SetXMLNodeText(FieldNode, GetEmployeeCivicNumber(*EmployeeA))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "StreetName")
  SetXMLNodeText(FieldNode, GetEmployeeStreetName(*EmployeeA))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "ZipPostalCode")
  SetXMLNodeText(FieldNode, GetEmployeeZipPostalCode(*EmployeeA))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "Email")
  SetXMLNodeText(FieldNode, GetEmployeeEmail(*EmployeeA))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "PhoneNumber01")
  SetXMLNodeText(FieldNode, GetEmployeePhoneNumber01(*EmployeeA))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "PhoneNumber02")
  SetXMLNodeText(FieldNode, GetEmployeePhoneNumber02(*EmployeeA))
 
  FieldNode = CreateXMLNode(StructNode)
  SetXMLNodeName(FieldNode, "Comments")
  SetXMLNodeText(FieldNode, GetEmployeeComments(*EmployeeA))
  
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Get - Node with child nodes <<<<<

Procedure GetEmployeeXMLNode(CurrentNode, *EmployeeA.Employee)

  If ParentXMLNode(CurrentNode) = #Null
    StructNode = ChildXMLNode(CurrentNode)
    If GetXMLNodeName(StructNode) = "Employee"
      Success = #True
    EndIf
  Else
    Success = #True
    StructNode = CurrentNode
  EndIf

  If Success = #True

    FieldNode = ChildXMLNode(StructNode)

    While FieldNode

      Select GetXMLNodeName(FieldNode)
 
        Case "PrimaryKeyID"
          SetEmployeePrimaryKeyID(*EmployeeA, Val(GetXMLNodeText(FieldNode)))
 
        Case "LoginName"
          SetEmployeeLoginName(*EmployeeA, Trim(GetXMLNodeText(FieldNode)))
 
        Case "LoginPassword"
          SetEmployeeLoginPassword(*EmployeeA, Trim(GetXMLNodeText(FieldNode)))
 
        Case "Type"
          SetEmployeeType(*EmployeeA, Val(GetXMLNodeText(FieldNode)))
 
        Case "Rights"
          SetEmployeeRights(*EmployeeA, Val(GetXMLNodeText(FieldNode)))
 
        Case "FirstName"
          SetEmployeeFirstName(*EmployeeA, Trim(GetXMLNodeText(FieldNode)))
 
        Case "LastName"
          SetEmployeeLastName(*EmployeeA, Trim(GetXMLNodeText(FieldNode)))
 
        Case "NumberID"
          SetEmployeeNumberID(*EmployeeA, Val(GetXMLNodeText(FieldNode)))
 
        Case "TownName"
          SetEmployeeTownName(*EmployeeA, Trim(GetXMLNodeText(FieldNode)))
 
        Case "CivicNumber"
          SetEmployeeCivicNumber(*EmployeeA, Trim(GetXMLNodeText(FieldNode)))
 
        Case "StreetName"
          SetEmployeeStreetName(*EmployeeA, Trim(GetXMLNodeText(FieldNode)))
 
        Case "ZipPostalCode"
          SetEmployeeZipPostalCode(*EmployeeA, Trim(GetXMLNodeText(FieldNode)))
 
        Case "Email"
          SetEmployeeEmail(*EmployeeA, Trim(GetXMLNodeText(FieldNode)))
 
        Case "PhoneNumber01"
          SetEmployeePhoneNumber01(*EmployeeA, Trim(GetXMLNodeText(FieldNode)))
 
        Case "PhoneNumber02"
          SetEmployeePhoneNumber02(*EmployeeA, Trim(GetXMLNodeText(FieldNode)))
 
        Case "Comments"
          SetEmployeeComments(*EmployeeA, Trim(GetXMLNodeText(FieldNode)))
  
      EndSelect

      FieldNode = NextXMLNode(FieldNode)

    Wend

  EndIf

  ProcedureReturn Success
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Set - Node with attributes <<<<<

Procedure SetEmployeeXMLAttribute(CurrentNode, *EmployeeA.Employee, NodeName.s = "Employee")
  
  StructNode = CreateXMLNode(CurrentNode)
  SetXMLNodeName(StructNode, NodeName)
 
  SetXMLAttribute(StructNode, "PrimaryKeyID", Str(GetEmployeePrimaryKeyID(*EmployeeA)))
  SetXMLAttribute(StructNode, "LoginName", GetEmployeeLoginName(*EmployeeA))
  SetXMLAttribute(StructNode, "LoginPassword", GetEmployeeLoginPassword(*EmployeeA))
  SetXMLAttribute(StructNode, "Type", Str(GetEmployeeType(*EmployeeA)))
  SetXMLAttribute(StructNode, "Rights", Str(GetEmployeeRights(*EmployeeA)))
  SetXMLAttribute(StructNode, "FirstName", GetEmployeeFirstName(*EmployeeA))
  SetXMLAttribute(StructNode, "LastName", GetEmployeeLastName(*EmployeeA))
  SetXMLAttribute(StructNode, "NumberID", Str(GetEmployeeNumberID(*EmployeeA)))
  SetXMLAttribute(StructNode, "TownName", GetEmployeeTownName(*EmployeeA))
  SetXMLAttribute(StructNode, "CivicNumber", GetEmployeeCivicNumber(*EmployeeA))
  SetXMLAttribute(StructNode, "StreetName", GetEmployeeStreetName(*EmployeeA))
  SetXMLAttribute(StructNode, "ZipPostalCode", GetEmployeeZipPostalCode(*EmployeeA))
  SetXMLAttribute(StructNode, "Email", GetEmployeeEmail(*EmployeeA))
  SetXMLAttribute(StructNode, "PhoneNumber01", GetEmployeePhoneNumber01(*EmployeeA))
  SetXMLAttribute(StructNode, "PhoneNumber02", GetEmployeePhoneNumber02(*EmployeeA))
  SetXMLAttribute(StructNode, "Comments", GetEmployeeComments(*EmployeeA))
  
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Get - Node with attributes <<<<<

Procedure GetEmployeeXMLAttribute(CurrentNode, *EmployeeA.Employee, NodeName.s = "Employee", Index = 1)

  StructNode = ChildXMLNode(CurrentNode, Index)

  If GetXMLNodeName(StructNode) = NodeName
 
    SetEmployeePrimaryKeyID(*EmployeeA, Val(GetXMLAttribute(StructNode, "PrimaryKeyID")))
    SetEmployeeLoginName(*EmployeeA, GetXMLAttribute(StructNode, "LoginName"))
    SetEmployeeLoginPassword(*EmployeeA, GetXMLAttribute(StructNode, "LoginPassword"))
    SetEmployeeType(*EmployeeA, Val(GetXMLAttribute(StructNode, "Type")))
    SetEmployeeRights(*EmployeeA, Val(GetXMLAttribute(StructNode, "Rights")))
    SetEmployeeFirstName(*EmployeeA, GetXMLAttribute(StructNode, "FirstName"))
    SetEmployeeLastName(*EmployeeA, GetXMLAttribute(StructNode, "LastName"))
    SetEmployeeNumberID(*EmployeeA, Val(GetXMLAttribute(StructNode, "NumberID")))
    SetEmployeeTownName(*EmployeeA, GetXMLAttribute(StructNode, "TownName"))
    SetEmployeeCivicNumber(*EmployeeA, GetXMLAttribute(StructNode, "CivicNumber"))
    SetEmployeeStreetName(*EmployeeA, GetXMLAttribute(StructNode, "StreetName"))
    SetEmployeeZipPostalCode(*EmployeeA, GetXMLAttribute(StructNode, "ZipPostalCode"))
    SetEmployeeEmail(*EmployeeA, GetXMLAttribute(StructNode, "Email"))
    SetEmployeePhoneNumber01(*EmployeeA, GetXMLAttribute(StructNode, "PhoneNumber01"))
    SetEmployeePhoneNumber02(*EmployeeA, GetXMLAttribute(StructNode, "PhoneNumber02"))
    SetEmployeeComments(*EmployeeA, GetXMLAttribute(StructNode, "Comments"))
  
  EndIf

EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Create Database table <<<<<

Procedure.b CreateDatabaseEmployeeTable(DatabaseID.l, TableName.s)
  
  If DatabaseUpdate(DatabaseID, "CREATE TABLE IF NOT EXISTS " + TableName + " (PrimaryKeyID INTEGER PRIMARY KEY, LoginName STRING, LoginPassword STRING, Type INTEGER, Rights INTEGER, FirstName STRING, LastName STRING, NumberID INTEGER, TownName STRING, CivicNumber STRING, StreetName STRING, ZipPostalCode STRING, Email STRING, PhoneNumber01 STRING, PhoneNumber02 STRING, Comments STRING)")
    Protected Success.b = #True
  EndIf
  
  ProcedureReturn Success
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Drop Database table <<<<<

Procedure.b DropDatabaseEmployeeTable(DatabaseID.l, TableName.s)
  
  If DatabaseUpdate(DatabaseID, "DROP TABLE IF EXISTS " + TableName)
    Protected Success.b = #True
  EndIf
  
  ProcedureReturn Success
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Turncate Database table <<<<<

Procedure.b TruncateDatabaseEmployeeTable(DatabaseID.l, TableName.s)
  
  If DatabaseUpdate(DatabaseID, "TRUNCATE TABLE " + TableName)
    Protected Success.b = #True
  Else
    If DatabaseUpdate(DatabaseID, "DELETE FROM " + TableName + " WHERE 1=1")
      Success = #True
    Else
      Success = #False
    EndIf
  EndIf
  
  ProcedureReturn Success
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Select Database table <<<<<

Procedure.b SelectDatabaseEmployeeTable(DatabaseID.l, TableName.s)
  
  If DatabaseQuery(DatabaseID, "SELECT * FROM " + TableName)
    Protected Success.b = #True
  EndIf
  
  ProcedureReturn Success
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Count Row In Database table <<<<<

Procedure.l CountRowInDatabaseEmployeeTable(DatabaseID.l, TableName.s, Where.s = "")
  
  If DatabaseQuery(DatabaseID, "SELECT COUNT(*) FROM " + TableName + " " + Where)
    NextDatabaseRow(DatabaseID)
    Protected TableRowCount.l = GetDatabaseLong(DatabaseID, 0)
    FinishDatabaseQuery(DatabaseID)
  EndIf
  
  ProcedureReturn TableRowCount
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Insert Database Table entry <<<<<

Procedure.b InsertDatabaseEmployeeTableEntry(DatabaseID.l, TableName.s, *EmployeeA.Employee)
  
  Protected DatabaseRequest.s = "INSERT INTO " + TableName + " (LoginName, LoginPassword, Type, Rights, FirstName, LastName, NumberID, TownName, CivicNumber, StreetName, ZipPostalCode, Email, PhoneNumber01, PhoneNumber02, Comments) VALUES ('"
  DatabaseRequest + GetEmployeeLoginName(*EmployeeA) + "', '"
  DatabaseRequest + GetEmployeeLoginPassword(*EmployeeA) + "', '"
  DatabaseRequest + Str(GetEmployeeType(*EmployeeA)) + "', '"
  DatabaseRequest + Str(GetEmployeeRights(*EmployeeA)) + "', '"
  DatabaseRequest + GetEmployeeFirstName(*EmployeeA) + "', '"
  DatabaseRequest + GetEmployeeLastName(*EmployeeA) + "', '"
  DatabaseRequest + Str(GetEmployeeNumberID(*EmployeeA)) + "', '"
  DatabaseRequest + GetEmployeeTownName(*EmployeeA) + "', '"
  DatabaseRequest + GetEmployeeCivicNumber(*EmployeeA) + "', '"
  DatabaseRequest + GetEmployeeStreetName(*EmployeeA) + "', '"
  DatabaseRequest + GetEmployeeZipPostalCode(*EmployeeA) + "', '"
  DatabaseRequest + GetEmployeeEmail(*EmployeeA) + "', '"
  DatabaseRequest + GetEmployeePhoneNumber01(*EmployeeA) + "', '"
  DatabaseRequest + GetEmployeePhoneNumber02(*EmployeeA) + "', '"
  DatabaseRequest + GetEmployeeComments(*EmployeeA) + "')"
  
  If DatabaseUpdate(DatabaseID, DatabaseRequest)
    Protected Success.b = #True
  EndIf
  
  ProcedureReturn Success
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Update Database Table entry <<<<<

Procedure.b UpdateDatabaseEmployeeTableEntry(DatabaseID.l, TableName.s, *EmployeeA.Employee)
  
  Protected DatabaseRequest.s = "UPDATE " + TableName + " SET "
  DatabaseRequest + "LoginName='" + GetEmployeeLoginName(*EmployeeA) + "', "
  DatabaseRequest + "LoginPassword='" + GetEmployeeLoginPassword(*EmployeeA) + "', "
  DatabaseRequest + "Type='" + Str(GetEmployeeType(*EmployeeA)) + "', "
  DatabaseRequest + "Rights='" + Str(GetEmployeeRights(*EmployeeA)) + "', "
  DatabaseRequest + "FirstName='" + GetEmployeeFirstName(*EmployeeA) + "', "
  DatabaseRequest + "LastName='" + GetEmployeeLastName(*EmployeeA) + "', "
  DatabaseRequest + "NumberID='" + Str(GetEmployeeNumberID(*EmployeeA)) + "', "
  DatabaseRequest + "TownName='" + GetEmployeeTownName(*EmployeeA) + "', "
  DatabaseRequest + "CivicNumber='" + GetEmployeeCivicNumber(*EmployeeA) + "', "
  DatabaseRequest + "StreetName='" + GetEmployeeStreetName(*EmployeeA) + "', "
  DatabaseRequest + "ZipPostalCode='" + GetEmployeeZipPostalCode(*EmployeeA) + "', "
  DatabaseRequest + "Email='" + GetEmployeeEmail(*EmployeeA) + "', "
  DatabaseRequest + "PhoneNumber01='" + GetEmployeePhoneNumber01(*EmployeeA) + "', "
  DatabaseRequest + "PhoneNumber02='" + GetEmployeePhoneNumber02(*EmployeeA) + "', "
  DatabaseRequest + "Comments='" + GetEmployeeComments(*EmployeeA) + "' "
  DatabaseRequest + "WHERE PrimaryKeyID='" + Str(GetEmployeePrimaryKeyID(*EmployeeA)) + "'"
  
  If DatabaseUpdate(DatabaseID, DatabaseRequest)
    Protected Success.b = #True
  EndIf
  
  ProcedureReturn Success
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Delete Database Table entry <<<<<

Procedure.b DeleteDatabaseEmployeeTableEntry(DatabaseID.l, TableName.s, *EmployeeA.Employee)
  
  If DatabaseUpdate(DatabaseID, "DELETE FROM " + TableName + " WHERE PrimaryKeyID='" + Str(GetEmployeePrimaryKeyID(*EmployeeA)) + "'")
    Protected Success.b = #True
  EndIf
  
  ProcedureReturn Success
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Extract Database Table entry <<<<<

Procedure ExtractDatabaseEmployeeTableEntry(DatabaseID.l, *EmployeeA.Employee)
  
  SetEmployeePrimaryKeyID(*EmployeeA, GetDatabaseLong(DatabaseID, 00))
  SetEmployeeLoginName(*EmployeeA, GetDatabaseString(DatabaseID, 01))
  SetEmployeeLoginPassword(*EmployeeA, GetDatabaseString(DatabaseID, 02))
  SetEmployeeType(*EmployeeA, GetDatabaseLong(DatabaseID, 03))
  SetEmployeeRights(*EmployeeA, GetDatabaseLong(DatabaseID, 04))
  SetEmployeeFirstName(*EmployeeA, GetDatabaseString(DatabaseID, 05))
  SetEmployeeLastName(*EmployeeA, GetDatabaseString(DatabaseID, 06))
  SetEmployeeNumberID(*EmployeeA, GetDatabaseLong(DatabaseID, 07))
  SetEmployeeTownName(*EmployeeA, GetDatabaseString(DatabaseID, 08))
  SetEmployeeCivicNumber(*EmployeeA, GetDatabaseString(DatabaseID, 09))
  SetEmployeeStreetName(*EmployeeA, GetDatabaseString(DatabaseID, 10))
  SetEmployeeZipPostalCode(*EmployeeA, GetDatabaseString(DatabaseID, 11))
  SetEmployeeEmail(*EmployeeA, GetDatabaseString(DatabaseID, 12))
  SetEmployeePhoneNumber01(*EmployeeA, GetDatabaseString(DatabaseID, 13))
  SetEmployeePhoneNumber02(*EmployeeA, GetDatabaseString(DatabaseID, 14))
  SetEmployeeComments(*EmployeeA, GetDatabaseString(DatabaseID, 15))
  
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Debugging macro <<<<<

Macro DebugEmployee(EmployeeA)

  Debug "PrimaryKeyID : " + Str(GetEmployeePrimaryKeyID(EmployeeA))
  Debug "LoginName : " + GetEmployeeLoginName(EmployeeA)
  Debug "LoginPassword : " + GetEmployeeLoginPassword(EmployeeA)
  Debug "Type : " + Str(GetEmployeeType(EmployeeA))
  Debug "Rights : " + Str(GetEmployeeRights(EmployeeA))
  Debug "FirstName : " + GetEmployeeFirstName(EmployeeA)
  Debug "LastName : " + GetEmployeeLastName(EmployeeA)
  Debug "NumberID : " + Str(GetEmployeeNumberID(EmployeeA))
  Debug "TownName : " + GetEmployeeTownName(EmployeeA)
  Debug "CivicNumber : " + GetEmployeeCivicNumber(EmployeeA)
  Debug "StreetName : " + GetEmployeeStreetName(EmployeeA)
  Debug "ZipPostalCode : " + GetEmployeeZipPostalCode(EmployeeA)
  Debug "Email : " + GetEmployeeEmail(EmployeeA)
  Debug "PhoneNumber01 : " + GetEmployeePhoneNumber01(EmployeeA)
  Debug "PhoneNumber02 : " + GetEmployeePhoneNumber02(EmployeeA)
  Debug "Comments : " + GetEmployeeComments(EmployeeA)
  
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Initialize operator <<<<<

Procedure InitializeEmployee(*EmployeeA.Employee)
 
  SetEmployeePrimaryKeyID(*EmployeeA, 0)
  SetEmployeeLoginName(*EmployeeA, "")
  SetEmployeeLoginPassword(*EmployeeA, "")
  SetEmployeeType(*EmployeeA, 0)
  SetEmployeeRights(*EmployeeA, 0)
  SetEmployeeFirstName(*EmployeeA, "")
  SetEmployeeLastName(*EmployeeA, "")
  SetEmployeeNumberID(*EmployeeA, 0)
  SetEmployeeTownName(*EmployeeA, "")
  SetEmployeeCivicNumber(*EmployeeA, "")
  SetEmployeeStreetName(*EmployeeA, "")
  SetEmployeeZipPostalCode(*EmployeeA, "")
  SetEmployeeEmail(*EmployeeA, "")
  SetEmployeePhoneNumber01(*EmployeeA, "")
  SetEmployeePhoneNumber02(*EmployeeA, "")
  SetEmployeeComments(*EmployeeA, "")
  
  ; ClearStructure(*EmployeeA, Employee)

EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Code generated in : 00.013 seconds (71538.46 lines/second) <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<
Sorry I can't resist, I have added a command to Reset, Copy, Compare, Swap, Debug and Initialize.

In 2006, when I have try to expose this tool many people says :
It's to long to work that way
Too long !?! Writing rate of 71538.46 lines/second, 00.013 seconds to generate, it's too long ? OK the record is 127 000 lines/second but unless I use a method of massively parallel programming it's impossible to go faster than that !

And yes the generated code is far from perfect but personally it's very close to most of my needs. Unfortunately, I have to warn all of you, if want to use it you have to adapt your programming style with the Based Object Programming concept. I not said Oriented Object Programming like C++ programming language.

Any drawbacks to the use of this programming tool ? Yes :
  • - some generated command require custom libs (Pack File, Encoded File, Encrypted file and Double Security file)
    - Pointer field like *Potatoes.Potato are not supported (You can edit the code manually after code generation or each code regeneration)
    - One Structure at time (except for multi-dimension static array)
    - Very large and multiple files source code, perhaps longer compilation time
    - Available in French and English only (Translation in other language are possible but translators for other language will be needed)
For the moment I'm not sure if I will release compiled program only or just the source code. Anyone will be able to compile for it's own computer (x86 or x86_64, Windows or Linux or MacOS).
So how many of you are interested by this programming tool ?

Best regards
Guimauve
Dear Optimist, Pessimist,
and Realist,

While you guys were
busy arguing about the
glass of water, I DRANK IT !

Sincerely,
the Opportunist
User avatar
Kiffi
Addict
Addict
Posts: 1357
Joined: Tue Mar 02, 2004 1:20 pm
Location: Amphibios 9

Re: What is Dev-Type

Post by Kiffi »

Guimauve wrote:So how many of you are interested by this programming tool ?
Image

Greetings ... Kiffi
Hygge
User avatar
idle
Always Here
Always Here
Posts: 5096
Joined: Fri Sep 21, 2007 5:52 am
Location: New Zealand

Re: What is Dev-Type

Post by idle »

It looks very useful in the contexts you've stated. Thanks
Windows 11, Manjaro, Raspberry Pi OS
Image
User avatar
Guimauve
Enthusiast
Enthusiast
Posts: 742
Joined: Wed Oct 22, 2003 2:51 am
Location: Canada

Re: What is Dev-Type

Post by Guimauve »

Hello everyone,

OK this is the Dev-Type V4.0.0 source code. Please note I have tested the code compilation with Windows XP SP3 and Linux Mint 14.1 x64. The only difference from OS to OS is where the preferences file is saved. Since I don't have a Mac Computer, I don't know where to save it and I have just use the same location as the Linux one. This can be wrong, feel free to report back the correction if any.

Special directive (the 1st one is the most important) :
  • 1. Make sure to read and understand the "Message from the author" available from the "Help" tab. (By the way, the English help files are not ready yet)
    2. Make sure to compile using the Debugger Active for the first time (This will generate the default comment text file. These file as to be used to translate Comment text in other languages)
    3. You have to use poedit to translate the GUI
    4. Custom libraries are under review and will be available during this week (anyway many of these lib are available from the Trick'N'Tips forum)
    5. This source code suffers from the paradox: If the egg comes from the chicken and the chicken comes from the egg, what came first!
    6. Some element has become useless since recent PureBasic version (Maths : Equal macro for example)
The download link is here : http://pages.videotron.com/gsaumure/fil ... Public.zip

Best regards
Guimauve
Dear Optimist, Pessimist,
and Realist,

While you guys were
busy arguing about the
glass of water, I DRANK IT !

Sincerely,
the Opportunist
said
Enthusiast
Enthusiast
Posts: 342
Joined: Thu Apr 14, 2011 6:07 pm

Re: What is Dev-Type

Post by said »

+1

Sounds interesting! Thanks for your answer and for sharing this tool ...

Regards,
Said
User avatar
StarBootics
Addict
Addict
Posts: 984
Joined: Sun Jul 07, 2013 11:35 am
Location: Canada

Re: What is Dev-Type

Post by StarBootics »

Hello Guimauve,

Your Dev-Type program save me a lot of code writing time. But the new "Module" feature introduced in PB 5.20 seems to be a big improvement for the language. Do you plan to upgrade your Dev-Type program to support Module programming style as well as Structured programming style ?

Thanks
StarBootics
The Stone Age did not end due to a shortage of stones !
User avatar
Guimauve
Enthusiast
Enthusiast
Posts: 742
Joined: Wed Oct 22, 2003 2:51 am
Location: Canada

Re: What is Dev-Type

Post by Guimauve »

Hello everyone,

Unfortunately an upgrade of Dev-Type will be very difficult for me to do. Renewing the house take a lot more time than expected, furthermore I broke the index finger of the right hand and this slow me down. When I use my right hand this finger inflates like a balloon.

Anyway I have a lot of idea to improve Dev-Type, I'm writing them in my notes and the "Module" concept have to studied to know what is possible to do but yes I will take a very close look to this new feature of the language.

For now if some can not wait, the source code is available otherwise a new version will be available in January 2014, I hope.

Best regards.
Guimauve
Dear Optimist, Pessimist,
and Realist,

While you guys were
busy arguing about the
glass of water, I DRANK IT !

Sincerely,
the Opportunist
Post Reply