PDA

View Full Version : First impressions



Petr Schreiber
25-10-2005, 08:57
Hi Roberto,

I just got your thinAir (1.0.4.2) with new preview version of thinBASIC.
I like it a lot ( both TB and TA :) ). It works very good on WinME, richedit is fast, great work really :eusaclap:. I really enjoy the multiwindow character of the editor. Only thing I'm missing is the Functions combobox and maybe the "New" icon on toolbar.


But there are few things which are strange a bit too:

:arrow: If I don't [ENTER] out the last line of code, the last character is ignored


msgbox "cool"
beep(2, 100)


This code is interpreted, but it generates RTE - "Missing close parents". If I press enter at last position of the line beep(2, 100) ( so code has 3 lines), all is ok

:arrow: "Open recent" is not working

:arrow: Strange case sentivity for F1. If I press it on "dim" or "DIM" it works, but "Dim" is a problem


And then I have few questions :)
Why is it called ILE?
What does mean the green triangle?
What does the Tools/Obfuscate?
What does the Windows/Option?
Why doesn't work the Tools/Compile->PowerBASIC in case of BAS files?

And now one personal :) :
Is it coded in C/C++ or PB ?


Thanks,
Petr

RobertoBianchi
25-10-2005, 13:25
Hi Psch,

first two issues are already fixed, instead F1 issue is still opened.

ILE, based on an old idea (Integrated Language Environment) is wrong I'll change to IDE (Integrated Development Environment).

The green triangle signs the start of each function/sub, in future it will be optional.

Tools/Obfuscate is used to encrypt and digitally sign a source plain text script and convert it into binary following these rules:
Plain text -> Encrypted text
.tbasic -> .tbasicx
.tbasicc -> .tbasiccx
Main purpose to use obfuscate source is for security reasons. thinBasic will be able to run obfuscated scripts both from shell or from web servers.

You should check and eventually change the following registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\ThinBasic\ThinAir\Compiler\PBCC
HKEY_LOCAL_MACHINE\SOFTWARE\ThinBasic\ThinAir\Compiler\PBWIN
HKEY_LOCAL_MACHINE\SOFTWARE\ThinBasic\ThinAir\Compiler\RC
and I should check the code!!! I'm sorry but I'm still working on.

Debugger:
pure 100% C code but actually it's a ghost in the sense it is deactivated at the moment. Future thinBasic versions will have debugging options.
Editor:
pure 100% PB code heavily based on Borje Hagsten EDM32.INC.

Thank you very much and best regards,
Roberto Bianchi

Petr Schreiber
25-10-2005, 15:05
Hi Roberto,

thanks for explanation. The obfuscation is good idea.
Regarding to "green triangles" - it's OK on loaded file, but it doesn't appear in new written text.

The register keys are really the reason why the BAS compilation won't work - thinAir key exists, but the sub keys not yet.

The F1 case problem is strange, maybe could help the conversion of the word by UCASE$ before passing it to help file.

Thanks,
Petr

ErosOlmi
25-10-2005, 23:16
Psch,

we have added a new download section called "Current developments".
We will update there latest thinBasic features. In this way every user can contribute to current under development release allowing us to catch more errors and bugs avoiding to release a "stable" version that is not "stable"

We will update as much frequently as possible this area.

Hope you will like it.
Eros

Petr Schreiber
27-10-2005, 20:51
Yes, I like it Eros, thanks :)

Regarding to thinAir I have 3 more issues:

:arrow: The REM keyword is highlighted, but it won't make whole line green
:arrow: The ABS keyword is not highlighted
:arrow: I like the feature which came with PB/WIN 7 - the "persistent workspace" - if I leave IDE and I have few files opened in windows, they will be opened on next session automatically


Bye,
Psch

P.S. Here is keyword list I have used for TrayAgent, it's untill bersion 1.0.4.2 or something like it, but I hope it helps



DATA #Include, Once, Ext, Extended, Long, Word, Dword, Integer, Double, Single, Quad, Number, CURRENCY, Dim, As, Value, Redim
DATA And, Or, Not, Xor
DATA If, Then, Else, ElseIf, End, For, Next, While, Wend, Do, Loop, Exit, Iterate, Select, Case, Stop, IsTrue
DATA IsFalse, Sleep, DoEvents
' Modules
DATA Uses
DATA Off, On, True, False
DATA ASC, Ascii2Unicode, BIN$, CHOOSE$, CHR$, CSET$, DATE$, EXTRACT$, FORMAT$, GUID$, GUIDTXT$, HEX$, IIF$, INSTR
DATA LCASE$, LEFT$, LEN, LSET$, LTRIM$, MCASE$, MID$, MKBYT$, MKCUR$, MKCUX$, MKD$, MKDWD$, MKE$, MKI$, MKL$, MKQ$
DATA MKS$, MKWRD$, PARSE$, PARSECOUNT, PEEK$, POKE$, REGEXPR$, REMOVE$, REPEAT$, REPLACE$, RIGHT$, RSET$, RTRIM$, STR$
DATA STRING$, STRINSERT$, STRDELETE$, STRPTR, STRREVERSE$, TALLY, TIME$, TRIM$, TRIMFULL$, UCASE$, Unicode2Ascii, USING$

DATA VAL, FUNCTION, LOCAL, STATIC, GLOBAL, STRING
DATA ABS, ATN, CEIL, COS, DECR, EXP, EXP2, EXP10, FIX, FRAC, IIF, INCR, INT, LOG, LOG2, LOG10, MOD, PCT, RANDOMIZE, RND, ROUND
DATA SGN, SIN, SQR, TAN, TIMER, VAL, VERIFY
DATA CVBYT, CVCUR, CVCUX, CVD, CVDWD, CVE, CVI, CVL, CVQ, CVS, CVWRD
DATA App_Name, App_Path, App_SourceName, App_SourcePath
DATA CGI_AddQuote, CGI_AddSpecialCharsPrefix, CGI_CfgGetOption, CGI_CfgSetOption, CGI_Environ, CGI_GetCurrentGUID, CGI_GetCurrentSession
DATA CGI_GetQueryValue, CGI_GetRequestMethod, CGI_GetSessionVariable, CGI_Header, CGI_LoadConfigFile, CGI_Read, CGI_RemoveQuote, CGI_RemoveSpecialCharsPrefix
DATA CGI_ResetDefaultSettings, CGI_SetSessionVariable, CGI_StartSession, CGI_UploadFileSize, CGI_UploadFilesNumber, CGI_UploadFilesTime
DATA CGI_UrlDecodeString, CGI_Write, CGI_WriteLogFile, Echo, Gets
DATA FILE_Changed, FILE_Close, FILE_Copy, FILE_EOF, FILE_Exists, FILE_Get, FILE_GetDateTime, FILE_GetDate, FILE_GetTime
DATA FILE_GetVersion, FILE_GetVersionString, FILE_Kill, FILE_Load, FILE_LOF, FILE_Open, FILE_PathSplit, FILE_Put, FILE_Rename
DATA FILE_Save, FILE_Seek, FILE_SetDateTime, FILE_Size, DIR_Change, DIR_ChangeDrive, DIR_Exists, DIR_GetCurrent, DIR_IsDir
DATA DIR_IsEmpty, DIR_List, DIR_Make, DIR_MakeAll, DIR_Remove
DATA PC_DecodeCDError, PC_EjectCD, PC_EmptyBin, PC_InsertCD, PC_Lock, PC_PreventShutDown, PC_RestartDialog, PC_ShutDown, PC_SuspendState
DATA Console_Box, Console_Cls, Console_FullScreen, Console_GetCursorSize, Console_GetInputMode, Console_GetOutputMode
DATA Console_GetTitle, Console_HideCursor, Console_NormalScreen, Console_Print, Console_ProgressBar, Console_Read, Console_ReadLine
DATA Console_SetCursorPosition, Console_SetCursorSize, Console_SetInputMode, Console_SetOutputMode, Console_SetTextAttribute, Console_SetTitle
DATA Console_ShowCursor, Console_ShowWindow, Console_WaitKey, Console_Write, Console_WriteLine, StdIn, StdOut
DATA OS_Environ, OS_GetCommand, OS_GetCommands, OS_GetComputerName, OS_GetSpecialFolder, OS_GetSystemDir, OS_GetTempDir, OS_GetUserName
DATA OS_GetWindowsDir, OS_IeVersion, OS_WinVersionText, OS_Shell, OS_ShellExecute, OS_Shell_FileOperation
DATA LL_Add, LL_Count, LL_Data, LL_DataByName, LL_Delete, LL_DeleteByName, LL_DeleteLike, LL_Free, LL_FindLast, LL_FindByName
DATA LL_FindByData, LL_FromFile, LL_GetByNumber, LL_GetItem, LL_Name, LL_ToFile, LL_ToString, LL_Update, LL_UpdateByName
DATA Crypto_Decrypt, Crypto_Encrypt, Crypto_EnumProviders, Crypto_EnumProviderTypes, Crypto_GenRandomString, Crypto_GetDefaultProvider, Crypto_GetProvidersCount
DATA Crypto_GetProviderTypesCount, iCrypto_ASCII2Bin, iCrypto_Bin2ASCII, iCrypto_ByteXor, iCrypto_CRC16, iCrypto_CRC32, iCrypto_DecryptRC4
DATA iCrypto_DecryptRijndael, iCrypto_EncryptRC4, iCrypto_EncryptRijndael, iCrypto_MD5, iCrypto_SHA1, iCrypto_TestCRC16, iCrypto_TestCRC32, iCrypto_TestMD5, iCrypto_TestSHA1
DATA DT_CookieDate, DT_DateAddDays, DT_DateSubDays, DT_DateTimeAddSeconds, DT_DateTimeSubSeconds, DT_DateToSec, DT_DateFormat, DT_Day, DT_GetDateCentury, DT_GetDateSeparator
DATA DT_GetMonthName, DT_GetTimeSeparator, DT_GetTimeStamp, DT_GetWeekDay, DT_GetWeekDayName, DT_Hour, DT_IsLeapYear, DT_LastDayOfMonth, DT_Minute, DT_Month
DATA DT_Second, DT_SecToDate, DT_SecToTime, DT_SetDateCentury, DT_SetDateSeparator, DT_SetTimeSeparator, DT_TimeAddSeconds, DT_TimeFormat, DT_TimeSubSeconds
DATA DT_TimeToSec, DT_Year
DATA INI_GetKey, INI_SetKey, INI_GetSectionsList, INI_GetSectionKeyList
DATA INET_GetState, INET_GetConnectionMode, INET_OpenDialUpDialog, INET_UrlDownload, INET_GetIp
DATA WIN_FindByTitle, WIN_SetForeground, WIN_IsVisible, WIN_GetActive, WIN_IsIconic, WIN_Show, WIN_Flash, WIN_GetTitle, WIN_SetTitle
DATA WIN_GetForeground, WIN_GetClass, WIN_FindByClass
DATA REGISTRY_GetKeys, REGISTRY_GetValue, REGISTRY_GetDWord, REGISTRY_GetTxtNum, REGISTRY_GetTxtBool, REGISTRY_SetValue, REGISTRY_SetDWord, REGISTRY_SetTxtNum
DATA REGISTRY_SetTxtBool, REGISTRY_DelValue, REGISTRY_DelKey
DATA TCP_Close, TCP_FreeFile, TCP_LineInput, TCP_Open, TCP_Print, TCP_Recv, TCP_Send
DATA UDP_Close, UDP_FreeFile, UDP_LineInput, UDP_Open, UDP_Print, UDP_Recv, UDP_Send
DATA BIFF_CloseFile, BIFF_CreateFile, BIFF_SetBuffer, BIFF_SetColWidth, BIFF_SetRowHeight, BIFF_WriteDate, BIFF_WriteNumber, BIFF_WriteText
DATA ZLIB_STRZIP$, ZLIB_STRUNZIP$
DATA PB_Show, PB_Hide, PB_Update
DATA VBS, VBS_GetString, VBS_GetNumber, VBS_SetString, VBS_SetNumber, VBS_Execute
DATA Engine_GetCurrentToken
DATA Beep, InputBox$, MsgBox, Log_Write, Sound_Play
DATA SendKey, SendKeyBulk
DATA DIALOG_New, DIALOG_State, DIALOG_End, DIALOG_Control
DATA RAS_OpenDialUpDialog, RAS_HangUpAll, RAS_HangUp, RAS_LoadEntries, RAS_GetEntry, RAS_SetParams, RAS_BeginDial
DATA SMTP_Connect, SMTP_Close, SMTP_Debug, SMTP_SetLogFile, SMTP_GetError, SMTP_SetOption, SMTP_SendEmail, SMTP_SendHtml, SMTP_Finished, SMTP_Statistics
DATA FTP_Connect, FTP_Quit, FTP_GetErrorString, FTP_GetErrorNumber, FTP_GetString, FTP_GetNumber, FTP_SetLocalDir, FTP_SetServerDir
DATA FTP_GetLocalDir, FTP_GetServerDir, FTP_GetList, FTP_Extract, FTP_GetFile, FTP_PutFile, FTP_SetLogFile, FTP_DelFile, FTP_SetOption
DATA FTP_Finished, FTP_Command, FTP_SetMode
DATA LIST_GetItem, LIST_SetItem, LIST_DelItem, LIST_Count, LIST_Find, LIST_Create, LIST_Join, LIST_Sort, LIST_AddItem, LIST_MakePretty
DATA XML_Parse, XML_ParseFile, XML_Free, XML_FindNode, XML_ChildData, XML_AttribValue, XML_AttribCount, XML_NextSibling, XML_NodeType, XML_DecodeParam
DATA XML_GetTag, XML_Child, XML_TreeToString, XML_NodeToString, XML_AttribName, XML_Parent, XML_LastError
DATA SQL_SetOption, SQL_SetOptionSInt, SQL_ErrorPending, SQL_ErrorText, SQL_ErrorQuickOne, SQL_ErrorQuickAll, SQL_ErrorClearAll
DATA SQL_OpenDataBase, SQL_CloseDataBase, SQL_Statement, SQL_CloseStatement, SQL_FetchResult, SQL_EndOfData, SQL_ResultRowCount, SQL_ResultColumnText
DATA SQL_ResultColumnStr, SQL_ResultColumnDate, SQL_ResultColumnSInt, SQL_ResultColumnUInt, SQL_ResultColumnFloat, SQL_LongResultColumn, SQL_ResColCount
DATA SQL_ResColInfoStr, SQL_DbInfoStr, SQL_TableCount, SQL_TableInfoStr
DATA SQL_OpenDb, SQL_CloseDB, SQL_Stmt, SQL_CloseStmt, SQL_Fetch, SQL_EOD, SQL_ResRowCount, SQL_ResColText, SQL_ResColStr, SQL_ResColDate
DATA SQL_ResColSInt, SQL_ResColUInt, SQL_ResColFloat, SQL_LongResCol, SQL_ResColCount, SQL_ResColInfoStr, SQL_DbInfoStr, SQL_TblCount, SQL_TblInfoStr

' New
DATA To, Step, Any, Parse, Using, Until, VarPtr
DATA APP_Timer, GetTickCount, IsUnicode, SelectExpression
DATA LBound, UBound, Alias, LoadModule
DATA Console_ForegroundRGB, Console_BackgroundRGB


DATA Console_BackgroundRGB, Console_ForegroundRGB, Console_GetCursorX, Console_GetCursorY
DATA Console_GetSizeX, Console_GetSizeY, Console_GetTextAttribute, Console_ScrollBufferOneRow, Console_ScrollWindow

RobertoBianchi
28-10-2005, 08:52
Psch,

I also like the "persistent workspace", sure I'll work on it.

Ciao
Roberto

ErosOlmi
28-10-2005, 14:58
Hi Petr.

If you execute the attached script you will get all thinBasic keywords.
APP_CreateKeyList is a new function present in last preview version of thinBasic.

Hope it will help ;)
Eros

Petr Schreiber
28-10-2005, 15:46
Hi Eros,

Thanks a lot, this is really interesting feature! Only thing which is strange is, that it won't list the mentioned ABS keyword :(

Would it be also possible to make similar function for built-in equates ?

Thanks,
Petr

ErosOlmi
28-10-2005, 15:54
Yes, I will do during weekend.

I can make:
APP_EquatesList
APP_VariablesList
APP_FunctionsList

or just one function like APP_List with a parameter:
APP_List(%Keys)
APP_List(%Vars)
...

What do you think?
Eros

Petr Schreiber
28-10-2005, 16:15
Hi,

Well, that's difficult question ;)

The non-equate way is maybe more clear, because you can't make mistake by typing the wrong name of equate. But it's up to you.

Thanks,
Petr

ErosOlmi
28-10-2005, 16:52
OK, I've changed all. These are the new functions already present in current 1.0.6.3:

APP_ListKeywords
APP_ListEquates.

If you download latest 1.0.6.3 preview you will get also 2 examples under SampleScripts\General\Keywords

See you.
Eros