📄 changes.txt
字号:
----------------------------------------------------------------------------------
VB2Cpp - Visual Basic to C++ translator.
Copyright (C) 2002-2003 Franck Charlet.
VB2Cpp is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
VB2Cpp is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with VB2Cpp; see the file Copying.txt. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
v0.8.67 (22/06/2003):
[NEW] - User can now select modules to convert or cancel whole process
after projects loading.
("NO CONVERSION" flag isn't recognized anymore).
- Third argument is now optional in Instr().
- New dynamic arrays engine (much cleaner and faster).
- Added App.EXEName.
- Added CLng().
- Comparisons handling re-written.
- DoEvents statement modified.
- Added Dir().
- Added handling for VB4/VB5 projects.
- The converter will use project's name if Title tag can't be found.
- Added Timer().
- Now displays number of reported warnings.
- Removed the textbox in main window.
- Added Split().
- Handling of Static statements for sub/functions/variables.
- Unknown entity tag now embedded in comments.
- Added an option to write original VB sourcecodes lines
in produced output (as comments).
- Modified and simplified code generation for Select/Case
(now uses if/else instead of if/goto).
- Debug configurations in generated projects now use debug libraries
by default.
- Local dynamic arrays are now supported.
[FIX] - Fixed some bugs in InStr()
- Fixed functions return values problem, such form is now allowed:
Public Function MyFunction() As String
MyFunction = "toto"
End Function
- Arrays handlers were returning a null pointer in some cases,
causing a GPF.
- Str() now accepts double numbers.
- Sgn() now accepts double numbers.
- Val() can now convert double numbers inside strings.
- Fixed some conversions problems.
- Longs and integers are now declared as signed.
- Some values weren't reseted correctly after a project conversion.
- Fixed nested GoSub/Return statements problem
(using inline Assembly language).
- Fixed some bugs with Case Else.
- Won't crash if an invalid function is found in pass 2.
(Occured when "Assume default type" was set to "(Report error)" and
and "Stop process at first error" wasn't checked).
- Now recognizes 0 To xxx form in REDIM statements.
- Won't initialize arrays of strings with null pointers anymore.
- Fixed DLLs names in declarations.
- The converter was confused with local variables sharing
their names with functions.
- Won't write global variables declarations in place of local ones
sharing same names.
- All subs/functions are now using stdcall convention.
- Byref arguments recognition was broken for some reasons.
- Modified way of handling temporary strings.
- Fixed second argument problem in String().
- Some auto-generated numbers weren't resetted correctly.
- Fixed some troubles with For statements.
- Local copy of subs/functions strings arguments passed by values
to avoid conflicts with temporary strings table (for example with
recursive routines).
- Memory allocations are now global.
- Fixed vbNewLine and vbCrLf constants in MiniWin.h
(strcat() was causing heap memory problems).
- Removed some bugs in IsNumeric() (tricky function).
- Can now open modules located in different drives.
- Modified way of handling string parameters not passed byval.
- Should now be able to handle byref arguments correctly
(especially strings).
- Local variables declarations are now gathered at the entry points
of the functions (to avoid VC's variables skip error).
- Elements of user types arguments are modified after possible
conversion checking.
- MsgBox() now limits the number of displayed chars to 1024
(like VB does).
- Not operator converted to ~ instead of ! (stoopid).
- Fixed StrComp function.
- LTrim()/Trim() won't remove tabs anymore.
[MISC] - Replaced all assembly functions with C equivalents (vb6asmlib removed).
- Removed warning message produced by VC linker (merged segments).
- Updated MiniWin.h.
- Default compilation mode for project is now Native (was PCode)
(conversions done with executable file are now much faster).
- Added NDEBUG constant definition in VC projects generation.
- Removed static option in preferences (now useless).
- Modified IsVariable() for more accurate searching.
- Strings stack enlarged.
- Removed the display of generated labels in summary (obsolete).
- Now uses malloc/free for memory working.
- Numerous little improvments here and there.
----------------------------------------------------------------------------------
v0.7.9 (20/09/2002):
[NEW] - Added handling for Gosub..Return instructions.
- Added MidB as instruction and function (Same as Mid).
- Added instruction Randomize and function Rnd()
- Added recognition for int().
[FIX] - Now frees memory on End and Stop statements (right before exit(0)).
- VC won't report an error for orphans numeric labels with : suffix.
- Changed abs() into fabs().
[SRC] - Added some new required declarations in MiniWin.h.
- Modified Example 2 (modified slightly + added a time counter).
----------------------------------------------------------------------------------
v0.6.22 (16/09/2002):
[NEW] - Added MsgBox() (hehe).
- Added more boolean conversions.
- Added App.Title.
- Added recognition for array(0 to x,0 to x...) format.
- Now recognizes $&!# chars after functions names
(Not finished).
- Added an option to pass over errors without breaking
conversion process (the converter will just write the faulty line
in the destination file and will continue).
[FIX] - Better recognition of optional arguments in subs/functions
(simple ones only).
- Corrected FileLen() (was broken).
- Added ; char right after labels to avoid strange messages
from MS compiler with orphans labels.
- IsNumeric() now recognizes booleans.
- Functions trailing chars handled differently.
- Now accepts comments in enumerations.
- Handles empty arguments passed to functions (put default value).
[SRC] - Cleaned up ConvertEntity() a bit.
- Added DisplayWarning() function.
- Added GetExpressionDoubleHunt().
- Corrected cases of C functions to match VB's ones
(Except LBound/UBound which are special cases).
- Replaced all lstrcmp/i APIs with C lib functions
in generated code.
- IsNumeric() declaration corrected
(was VAR_LONG but must be VAR_BOOLEAN).
- Added more garbage in Example5.
- Disabled warning 4305: truncation from 'const double' to 'float'
(VB truncates it anyway).
- IsSimpleElement() more accurate now concerning generated code.
----------------------------------------------------------------------------------
v0.5.76 (02/09/2002):
[NEW] - Added With/End With statements recognitions.
- Unspecified types can now be enforced into a basic type
or produce an error (option can be found in preferences).
- Should pass over Debug.Print/Debug.?/Debug.Assert statements.
- Added handling for IsNumeric().
- Now recognizes ChDrive instruction (No directories caching).
- Added CurDir()/CurDir$() function.
- Added Date()/Date$()/Time()/Time$()/Now() functions.
- Removed warning 4700 (Unitialized variable).
- String to String ifs and select cases are now handled differently
and are possible in some cases (not tested extensively).
- Now can handle several variables declarations on same line
as both local and global like:
Dim Var1 As Integer,Var2 As String ...
- Added support for ElseIf instruction (not tested extensively).
- Added handling for Loop While statements.
- Added handling for Loop Until statements.
- Added handling for Do Until statements.
- Added handling for While/Wend couple.
- Added Call instruction.
- Added Let instruction.
- Added Rem instruction.
- Added SetAttr instruction.
- Added Stop instruction (handled like End).
- Added Option Compare predicat (global only).
- Added AscB() function.
- Added ChrB() function.
- Added DoEvents instruction (Just replaced with Sleep(0)).
- Added Oct() function.
- Added StrComp() function.
- Should recognizes + operator with strings operations.
- Integer/Long/Double conversions to string doesn't create
temporary variables anymore (uses str()/dbltostr() instead).
- Same goes for String conversions to Int/Long.
- Added user32.lib in minimum needed libraries.
- Added handling for Single numbers (Added also sngtostr()).
- Conversion handling from String to double/single doesn't use
(lousy) atol() anymore (now strtodbl()/strtosng()).
- Added handling for multiple constants declarations/line.
- Explicit types of constants are now allowed.
- Added recognition of #const/#if/#elseif/#else/#endif compilation
instructions: these ones are handled like normal ones due to
C/C++ preprocessor inferiority against VB one
(and due to the nature of my lousy "parser").
The converter will just add a notification comment
above the encountered instruction.
- All builtin constants are declared inside appropriate enumerations
(Eg. It is now possible to use: Constants.vbCr).
- Lines numbers are now handled as prefix and in goto instructions
(Converted to local labels).
- Added StartMode to App object.
- Boolean to string conversions are now handled correctly.
[FIX] - Minors enhancements in GUI:
- Properties can be validated with "enter" key.
- It now reloads parameters correctly within a session.
- And main window now opens in maximized state.
- Should pass over "Attribute" internal keyword.
I just found this laying in the middle of a module and honestly
i still can't figure out what it is. It was something like:
Attribute <FunctionName>.VB_MemberFlags="2"
If someone have clues about this just let me know...
- Fixed a (stupid) bug in select case code generation.
- Now accept comments after labels.
- Should now recognizes numbers inside quotes.
- Now try to avoid more types conversions (if possible).
- Literal strings are now correctly converted.
- Corrected labels generation.
- Single lines ifs are now generated like blocks ones
to avoid conversions garbage.
- User types arguments are now passed by address if the function
is waiting for an user type too.
- Now try to retrieve real type of referenced variables
in user types to avoid some useless conversions.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -