29 WLANGUAGE CODE SAMPLES (5GL)
This page presents WLanguage code samples.
This is what L5G code looks like!
(and don't forget that there is nothing to code for several functions, all you have to do is click the choices proposed by the IDE ; these examples present the language only).
Example 1: Scanning a document
// Saves the document found in the scanner in the "MyPhoto.JPEG" file
// The document will be saved in black and white
IF TwainToBMP("C:\Temp\MyPhoto.BMP", False, TwainBlackWhite) = True THEN
Info("The document was saved")
ELSE
Error("The document was not scanned")
END
// The document will be saved in black and white
IF TwainToBMP("C:\Temp\MyPhoto.BMP", False, TwainBlackWhite) = True THEN
Info("The document was saved")
ELSE
Error("The document was not scanned")
END
Example 2: Reading a registry key
// Reads the "Language" value in the "HKEY_LOCAL_MACHINE\SOFTWARE\App" key
// ResExecute is a boolean used to find out whether the value was read
ResRead = RegistryQueryValue("HKEY_LOCAL_MACHINE\SOFTWARE\App", "Language", ResExecute)
IF ResExecute = True THEN
Info("The value was read and it is set to: " + ResRead)
END
// ResExecute is a boolean used to find out whether the value was read
ResRead = RegistryQueryValue("HKEY_LOCAL_MACHINE\SOFTWARE\App", "Language", ResExecute)
IF ResExecute = True THEN
Info("The value was read and it is set to: " + ResRead)
END
Example 3: Selecting a color
Value is int
SelectionResult is boolean
Value = RGB(10, 17, 69)
Info("Initial color: " + Value)
SelectionResult = SelectColor(Value, scInit)
Info("Final color: " + Value)
SelectionResult is boolean
Value = RGB(10, 17, 69)
Info("Initial color: " + Value)
SelectionResult = SelectColor(Value, scInit)
Info("Final color: " + Value)
Example 4: Calculating the number of days between 2 dates
// Displays the number of days passed since 01/01/1998
Info(NumToString(DateDifference("19980101", DateSys())) + "days spent")
Info(NumToString(DateDifference("19980101", DateSys())) + "days spent")
Example 5: Extracting part of a file path
sFilePath is string
sResFileName is string
sFilePath = "C:\MyDirectories\File.psw"
// Retrieve the name of the file
sResFileName = fExtractPath(sFilePath, fFileName)
// sResFileName corresponds to "File"
sResFileName is string
sFilePath = "C:\MyDirectories\File.psw"
// Retrieve the name of the file
sResFileName = fExtractPath(sFilePath, fFileName)
// sResFileName corresponds to "File"
Example 6: Transforms a number into a character string corresponding to the number "written in words"
Info(NumberInWords(83.335))
// Displays "eighty three point thirty four"
Info(NumberInWords(1.10, "Euro(s)"))
// Displays "one Euro ten"
Info(NumberInWords(1.01, "Euro(s)", "cent(s)"))
// Displays "one Euro and one cent"
// Displays "eighty three point thirty four"
Info(NumberInWords(1.10, "Euro(s)"))
// Displays "one Euro ten"
Info(NumberInWords(1.01, "Euro(s)", "cent(s)"))
// Displays "one Euro and one cent"
Example 7: Sending an email
IF EmailStartSession(USER, PASSWORD, "pop3.gmail.com", ...
"smtp.gmail.com") = True THEN
UserName = USER
ELSE
UserName = ""
Error("Unable to establish the connection")
END
// Initializes the email components
// The sender
Email.Sender = "<user@pcsoft.fr>"
// The recipient
Email.Recipient[1] = RECIPIENT
// The number of recipients
Email.NbRecipient = 1
// The subject
Email.Subject = SUBJECT
// The message body
Email.Message = TEXT
// The number of attachments
Email.NbAttach = 0
// Sends the email
IF EmailSendMessage(UserName) = False THEN
Error()
END
"smtp.gmail.com") = True THEN
UserName = USER
ELSE
UserName = ""
Error("Unable to establish the connection")
END
// Initializes the email components
// The sender
Email.Sender = "<user@pcsoft.fr>"
// The recipient
Email.Recipient[1] = RECIPIENT
// The number of recipients
Email.NbRecipient = 1
// The subject
Email.Subject = SUBJECT
// The message body
Email.Message = TEXT
// The number of attachments
Email.NbAttach = 0
// Sends the email
IF EmailSendMessage(UserName) = False THEN
Error()
END
Example 8: Adding an icon in the systray
// Add the "C:\Icons\Icon.ICO" icon into the taskbar
ResAddIcon = SysIconAdd("C:\Icons\Icon.ICO", "", "Sales 2013")
ResAddIcon = SysIconAdd("C:\Icons\Icon.ICO", "", "Sales 2013")
Example 9: Saving a screen shot
// Saves in memory the image found in "IMG_ImageDrawing"
ResSave = dSaveImageJPEG(IMG_ImageDrawing, inMemory)
ResSave = dSaveImageJPEG(IMG_ImageDrawing, inMemory)
Example 10: Example for declaring variables
// Declaration of variables
Value is int
SelectionResult is boolean
Price is real
x,j,k are int
Value is int
SelectionResult is boolean
Price is real
x,j,k are int
Example 11: Code/Interface interaction
// Runs the click code on a button
ExecuteProcess(BTN_Save, trtClick)
ExecuteProcess(BTN_Save, trtClick)
Example 12: Managing threads by programming
// Run a thread while passing parameters
sDate is string
sDate = DateSys()
// Run the thread
ThreadExecute("THREADNAME", threadNormal, "pExecQry", sDate)
// Details of the "pExecQry" procedure
// This procedure expects a date in parameter of a query
PROCEDURE pExecQry(sDate)
IF HExecuteQuery(Del_Date, hQueryDefault, sDate) = False THEN
Error(HErrorInfo())
ELSE
HReadFirst(Del_Date)
END
sDate is string
sDate = DateSys()
// Run the thread
ThreadExecute("THREADNAME", threadNormal, "pExecQry", sDate)
// Details of the "pExecQry" procedure
// This procedure expects a date in parameter of a query
PROCEDURE pExecQry(sDate)
IF HExecuteQuery(Del_Date, hQueryDefault, sDate) = False THEN
Error(HErrorInfo())
ELSE
HReadFirst(Del_Date)
END
Example 13: Print preview
// No button in the preview
iParameterPreview(iButtonNone)
iPreview()
iPrintReport(RPT_MyReport)
iParameterPreview(iButtonNone)
iPreview()
iPrintReport(RPT_MyReport)
Example 14: Printing in HTML
// Print a report based on a query without parameter in an HTML file
// Generate a unique file name
MyReportFile is string = fWebDir() + "\" + "ReportQuery_" + DateSys() + TimeSys() + ".htm"
// Configure the destination of the print
iDestination(iHTML, MyReportFile)
// Print the RPT_QueryReport report
iPrintReport(RPT_QueryReport)
// Extract the name and extension of the generated file
NameGeneratedFile is string = fExtractPath(MyReportFile, fFileName + fExtension)
// Send the file to the browser
PageDisplay(NameGeneratedFile)
// Generate a unique file name
MyReportFile is string = fWebDir() + "\" + "ReportQuery_" + DateSys() + TimeSys() + ".htm"
// Configure the destination of the print
iDestination(iHTML, MyReportFile)
// Print the RPT_QueryReport report
iPrintReport(RPT_QueryReport)
// Extract the name and extension of the generated file
NameGeneratedFile is string = fExtractPath(MyReportFile, fFileName + fExtension)
// Send the file to the browser
PageDisplay(NameGeneratedFile)
Example 15: Generating a PDF file
// Generate a unique PDF file name
AFile is string
AFile = fWebDir() + "\" + DateSys() + TimeSys() + ".pdf"
// Configure the destination of the print
iDestination(iPDF, AFile)
// Print the RPT_InvoicePDF report
iPrintReport(RPT_InvoicePDF)
// Send the file to the browser
FileDisplay(AFile, "application/pdf")
// Delete the file
fDelete(AFile)
AFile is string
AFile = fWebDir() + "\" + DateSys() + TimeSys() + ".pdf"
// Configure the destination of the print
iDestination(iPDF, AFile)
// Print the RPT_InvoicePDF report
iPrintReport(RPT_InvoicePDF)
// Send the file to the browser
FileDisplay(AFile, "application/pdf")
// Delete the file
fDelete(AFile)
Example 16: Protecting a PDF file
// In this example, the password is "password"
iParameterPDF("opening", "password", iProtectionPrinting + iProtectionSelection)
// Create the PDF file
iPreview(iPDF, "MyPDF.PDF")
// Code for print
iCreateFont(1, 16, iBold, iRoman)
iPrintWord("First line of my PDF" + CR + "Second line of my PDF" + ...
CR + "Last line of my PDF")
// End of print and close the created PDF file
iEndPrinting()
// Display the PDF
ShellExecute(iLastFile())
iParameterPDF("opening", "password", iProtectionPrinting + iProtectionSelection)
// Create the PDF file
iPreview(iPDF, "MyPDF.PDF")
// Code for print
iCreateFont(1, 16, iBold, iRoman)
iPrintWord("First line of my PDF" + CR + "Second line of my PDF" + ...
CR + "Last line of my PDF")
// End of print and close the created PDF file
iEndPrinting()
// Display the PDF
ShellExecute(iLastFile())
Example 17: Selecting a PCL printer (mobile)
// PCL printer to use
iDestination(iPCL, "\\MyNetwork\MyPrinter")
iDestination(iPCL, "\\MyNetwork\MyPrinter")
Example 18: Print in PCL format (mobile)
iDestination(iPCL, "\MyDocuments\MyFile.PCL")
Example 19: Dialing a phone number
IF tapiDial(EDT_PhoneNumber, "LineStatus")=True THEN
Info("Click OK to hang up")
tapiHangUp()
END
PROCEDURE TestLineStatus(ValueLineStatus is int)
SWITCH ValueLineStatus
CASE tapiLineBusy: Message("The line is busy")
CASE tapiLineConnected: Message("OK, connected")
CASE tapiLineDialing: Message("Dialing in progress")
CASE tapiLineDialTone: Message("Dial tone")
CASE tapiLineDisconnected: Message("The correspondent has hung up")
CASE tapiLineProceeding: Message("Searching for your correspondent")
CASE tapiLineRingBack: Message("Ringing")
END
Info("Click OK to hang up")
tapiHangUp()
END
PROCEDURE TestLineStatus(ValueLineStatus is int)
SWITCH ValueLineStatus
CASE tapiLineBusy: Message("The line is busy")
CASE tapiLineConnected: Message("OK, connected")
CASE tapiLineDialing: Message("Dialing in progress")
CASE tapiLineDialTone: Message("Dial tone")
CASE tapiLineDisconnected: Message("The correspondent has hung up")
CASE tapiLineProceeding: Message("Searching for your correspondent")
CASE tapiLineRingBack: Message("Ringing")
END
Example 20: Financial calculations
// Interest rate for a loan of 25000 Euros. Six payments
// of 5000 Euros are required to pay off the loan.
ResInterestRate = FinInterestRate(6, -5000, 25000)
// of 5000 Euros are required to pay off the loan.
ResInterestRate = FinInterestRate(6, -5000, 25000)
Example 21: Reading a text file line by line
// Exit according to an IF condition
LOOP
// Read a line in the text file
ALine = fReadLine(FileNum)
IF ALine = EOT THEN BREAK
ProcessLine(ALine)
END
LOOP
// Read a line in the text file
ALine = fReadLine(FileNum)
IF ALine = EOT THEN BREAK
ProcessLine(ALine)
END
Example 22: Exit according to a WHILE condition
MyList = INIRead("Examples", "", "", INIFile)
Keyword = ExtractString(MyList, nb, CR)
WHILE Keyword <> ""
nb = nb + 1
ExplName = INIRead("Projects installed", Keyword, "", INIFile)
Keyword = ExtractString(MyList, nb + 1, CR)
END
Keyword = ExtractString(MyList, nb, CR)
WHILE Keyword <> ""
nb = nb + 1
ExplName = INIRead("Projects installed", Keyword, "", INIFile)
Keyword = ExtractString(MyList, nb + 1, CR)
END
Example 21: Reading a text file line by line
// Exit according to an iteration
LOOP (10)
// Read a line in the text file
ALine = fReadLine(FileNum)
ProcessLine(ALine)
END
LOOP (10)
// Read a line in the text file
ALine = fReadLine(FileNum)
ProcessLine(ALine)
END
Example 24: Export to Excel
sFile is string
// Asks for the name of the file
sFile = fSelect("", "", "Choose the export file", ...
"Excel files (*.xls) *.xls", "xls", fselCreate + fselExist)
// If the name was not specified, cancels the export
// Otherwise, exports the content of TABLE_TABLE1
IF sFile <> "" THEN TableToWord(TABLE_TABLE1, sFile, taNoTitle)
// Asks for the name of the file
sFile = fSelect("", "", "Choose the export file", ...
"Excel files (*.xls) *.xls", "xls", fselCreate + fselExist)
// If the name was not specified, cancels the export
// Otherwise, exports the content of TABLE_TABLE1
IF sFile <> "" THEN TableToWord(TABLE_TABLE1, sFile, taNoTitle)
Example 25: Export to XML
sFile is string
// Name of the file
sFile = fSelect("", "", "Choose the export file", ...
"XML files (*.XML) *.xml", "xml", fselCreate + fselExist)
// The export is canceled if no name was specified
// Otherwise, export the content of TABLE_TABLE1
IF sFile <> "" THEN TableToXML(TABLE_TABLE1, sFile, taNoTitle)
// Name of the file
sFile = fSelect("", "", "Choose the export file", ...
"XML files (*.XML) *.xml", "xml", fselCreate + fselExist)
// The export is canceled if no name was specified
// Otherwise, export the content of TABLE_TABLE1
IF sFile <> "" THEN TableToXML(TABLE_TABLE1, sFile, taNoTitle)
Example 26: Extracting part of a file path
sFile is string
// Asks for the name of the file
sFile = fSelect("", "", "Choose the export file", ...
"Word files (*.rtf) *.rtf", "rtf", fselCreate + fselExist)
// If the name was not specified, cancels the export
// Otherwise, exports the content of TABLE_TABLE1
IF sFile <> "" THEN TableToWord(TABLE_TABLE1, sFile, taNoTitle)
// Asks for the name of the file
sFile = fSelect("", "", "Choose the export file", ...
"Word files (*.rtf) *.rtf", "rtf", fselCreate + fselExist)
// If the name was not specified, cancels the export
// Otherwise, exports the content of TABLE_TABLE1
IF sFile <> "" THEN TableToWord(TABLE_TABLE1, sFile, taNoTitle)
Example 27: Sending an SMS
// Initialize the SMS structure for a standard number
SMS.Number = "0610203040"
SMS.Message = "I am sending SMSs with WINDEV Mobile!"
// Send the SMS
ResSend is boolean = SMSSend()
// Error occurred?
IF ResSend = False THEN
Error(ErrorInfo(errMessage))
END
SMS.Number = "0610203040"
SMS.Message = "I am sending SMSs with WINDEV Mobile!"
// Send the SMS
ResSend is boolean = SMSSend()
// Error occurred?
IF ResSend = False THEN
Error(ErrorInfo(errMessage))
END
Example 28: Sending a fax
ConnectID is int
ConnectID = FaxConnect()
IF ConnectID = 0 THEN
Error("The connection to the fax server failed." + ...
"Check whether it has been started", ...
ErrorInfo(errSystemMessage))
ELSE
ListAdd(LIST_FaxSend, FaxOutbox(ConnectID))
END
...
// Click code of the list box
IF FaxStatus(LIST_FaxSend..DisplayedValue) = FaxStatusHandled THEN
FaxRestart(LIST_FaxSend..DisplayedValue)
END
...
FaxDisconnect(ConnectID)
ConnectID = FaxConnect()
IF ConnectID = 0 THEN
Error("The connection to the fax server failed." + ...
"Check whether it has been started", ...
ErrorInfo(errSystemMessage))
ELSE
ListAdd(LIST_FaxSend, FaxOutbox(ConnectID))
END
...
// Click code of the list box
IF FaxStatus(LIST_FaxSend..DisplayedValue) = FaxStatusHandled THEN
FaxRestart(LIST_FaxSend..DisplayedValue)
END
...
FaxDisconnect(ConnectID)
Example 29: Acquisition on the serial port
(this code is generated by a wizard, you don't even have to type it!)
(this code is generated by a wizard, you don't even have to type it!)
Result1 = sOpen(1, 2000, 2000) // Open COM1
IF Result1 = True THEN
// Configure Com1: Rate 9600, even parity,
// 8 data bits, 1 stop bit
sParameter(1, 9600, 1, 8, 0) // Configure COM1
// Rest of process...
sClose(1) // Close COM1
ELSE
Error("Error while opening COM1")
END
IF Result1 = True THEN
// Configure Com1: Rate 9600, even parity,
// 8 data bits, 1 stop bit
sParameter(1, 9600, 1, 8, 0) // Configure COM1
// Rest of process...
sClose(1) // Close COM1
ELSE
Error("Error while opening COM1")
END