|
|
(30 intermediate revisions by the same user not shown) |
Line 14: |
Line 14: |
|
| |
|
| {{PageDescription}} | | {{PageDescription}} |
| To use this skeleton click on the '''Edit''' tab above the page, then copy the raw text of this page and paste it into your new page. Change/remove sections as needed. Use ''this'' for italic and '''this''' for bold text style. To color your writings use the {{Text|Text template|red}}. It takes either a color name or a #RRGGBB 32bit color, if the color part is omitted it will default to {{Text|gray}}. | | To use this skeleton click on the '''View source''' tab above the page, then copy the raw text of this page and paste it into your new page. Change/remove sections as needed. Use ''this'' for italic and '''this''' for bold text style. To color your writings use the {{Text|Text template|red}}. It takes either a color name or a #RRGGBB 32bit color, if the color part is omitted it will default to {{Text|gray}}. |
|
| |
|
| You can inline simple code one liners like {{InlineCode}}w = {{Cl|_WIDTH}}{{InlineCodeEnd}} | | You can inline simple code one liners like {{InlineCode}}w = {{Cl|_WIDTH}}{{InlineCodeEnd}} |
|
| |
|
| * an askerisk marks a list point | | * an askerisk marks a list point |
| ** two askerisks will indent the list | | ** two askerisks will do a sub-list, avoid deeper nesting than this |
| *** three askerisks will indent even more
| |
|
| |
|
| ; This is a definition list : The first description can follow right after a colon | | ; This is a definition list : The first description can follow right after a colon |
Line 68: |
Line 67: |
| </gallery> | | </gallery> |
| <!-- additional availability notes go below here --> | | <!-- additional availability notes go below here --> |
| * The capability to load from ''memory'' was introduced in '''QB64-PE''' ''v3.5.0''. | | * The capability to load from ''memory'' was introduced in '''QB64-PE v3.5.0'''. |
|
| |
|
|
| |
|
Line 81: |
Line 80: |
| {{CodeEnd}} | | {{CodeEnd}} |
| {{Small|This template allows for a short author credit.}} | | {{Small|This template allows for a short author credit.}} |
| | {{PreStart}} |
| | '''Note:''' To avoid the annoying task of manually inserting the templates |
| | in your code examples, since v3.7.0 you may simply write your example |
| | in the IDE and later use the menu "File > Export As > Wiki example" to |
| | export a completely prepared code block, which you can paste "as is" |
| | into the Wiki page. |
|
| |
|
| | Oh, and by the way, this ''preformatted text block'' is also new. Generally |
| | it's the same as a ''fixed text block'' shown above, but it uses horizontal |
| | scrollers instead of stretching the text box and it has a more plain |
| | appearance. If you want avoid the horizontal scroller, then restrict |
| | yourself to a line length of max. 72 characters. |
| | {{PreEnd}} |
|
| |
|
| : The output block is available for the SCREEN 0 background colors 0-7 | | : The output block is available for the SCREEN 0 background colors 0-7 |
Line 91: |
Line 102: |
|
| |
|
| {{PageSeeAlso}} | | {{PageSeeAlso}} |
| | * [https://qb64phoenix.com/forum/showthread.php?tid=1066 Featured in our "Keyword of the Day" series] |
| * [[Keyword Reference - Alphabetical]] | | * [[Keyword Reference - Alphabetical]] |
| * [[Keyword Reference - By usage]] | | * [[Keyword Reference - By usage]] |
Line 96: |
Line 108: |
|
| |
|
| {{PageNavigation}} | | {{PageNavigation}} |
|
| |
| {{CodeStart}}
| |
| {{Text|<nowiki>'+---------------+---------------------------------------------------+</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| ###### ###### | .--. . .-. |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| ## ## ## # | | )| ( ) o |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| ## ## ## | |--' |--. .-. `-. . .-...--.--. .-. |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| ###### ## | | \ | |( )( ) | ( || | |( ) |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| ## ## | ' `' `-`-' `-'-' `-`-`|' ' `-`-'`- |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| ## ## # | ._.' |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| ## ###### | Sources & Documents placed in the Public Domain. |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'+---------------+---------------------------------------------------+</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| === MakeCARR.bas === |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == Create a C/C++ array out of the given file, so you can embed |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == it in your program and write it back when needed. |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == Two files are created, the .h file, which contains the array(s)|</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == and some functions, and a respective .bm file which needs to |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == be $INCLUDEd with your program and does provide the FUNCTION |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == to write back the array(s) into any file. All used functions |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == are standard library calls, no API calls are involved, so the |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == writeback should work on all QB64 supported platforms. |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == Make sure to adjust the path for the .h file for your personal |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == needs in the created .bm files (DECLARE LIBRARY), if required. |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == You may specify default paths right below this header. |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == This program needs the 'lzwpacker.bm' file available from the |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == Libraries Collection here: |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == http://qb64phoenix.com/forum/forumdisplay.php?fid=23 |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == as it will try to pack the given file to keep the array(s) as |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == small as possible. If compression is successful, then your |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == program also must $INCLUDE 'lzwpacker.bm' to be able to unpack |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == the file data again for write back. MakeCARR.bas is printing |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| == a reminder message in such a case. |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'+-------------------------------------------------------------------+</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| Done by RhoSigma, R.Heyder, provided AS IS, use at your own risk. |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| Find me in the QB64 Forum or mail to support@rhosigma-cw.net for |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'| any questions or suggestions. Thanx for your interest in my work. |</nowiki>|#919191}}
| |
| {{Text|<nowiki>'+-------------------------------------------------------------------+</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'--- if you wish, set any default paths, end with a backslash ---</nowiki>|#919191}}
| |
| srcPath$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Text|<nowiki>'source path</nowiki>|#919191}}
| |
| tarPath$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Text|<nowiki>'target path</nowiki>|#919191}}
| |
| {{Text|<nowiki>'-----</nowiki>|#919191}}
| |
| {{Cl|about:blank|IF}} srcPath$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|about:blank|THEN}}
| |
| {{Cl|about:blank|COLOR}} {{Text|15|#F580B1}}: {{Cl|about:blank|PRINT}} {{Text|<nowiki>"Default source path: "</nowiki>|#FFB100}}: {{Cl|about:blank|COLOR}} {{Text|7|#F580B1}}: {{Cl|about:blank|PRINT}} srcPath$: {{Cl|about:blank|PRINT}}
| |
| {{Cl|about:blank|END}} {{Cl|about:blank|IF}}
| |
| {{Cl|about:blank|IF}} tarPath$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|about:blank|THEN}}
| |
| {{Cl|about:blank|COLOR}} {{Text|15|#F580B1}}: {{Cl|about:blank|PRINT}} {{Text|<nowiki>"Default target path: "</nowiki>|#FFB100}}: {{Cl|about:blank|COLOR}} {{Text|7|#F580B1}}: {{Cl|about:blank|PRINT}} tarPath$: {{Cl|about:blank|PRINT}}
| |
| {{Cl|about:blank|END}} {{Cl|about:blank|IF}}
| |
|
| |
| {{Text|<nowiki>'--- collect inputs (relative paths allowed, based on default paths) ---</nowiki>|#919191}}
| |
| source:
| |
| {{Cl|about:blank|LINE}} {{Cl|about:blank|INPUT}} {{Text|<nowiki>"Source Filename: "</nowiki>|#FFB100}}; src$ {{Text|<nowiki>'any file you want to put into a C/C++ array</nowiki>|#919191}}
| |
| {{Cl|about:blank|IF}} src$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|about:blank|GOTO}} source
| |
| target:
| |
| {{Cl|about:blank|LINE}} {{Cl|about:blank|INPUT}} {{Text|<nowiki>"Target Basename: "</nowiki>|#FFB100}}; tar$ {{Text|<nowiki>'write stuff into this file(s) (.h/.bm is added)</nowiki>|#919191}}
| |
| {{Cl|about:blank|IF}} tar$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|about:blank|GOTO}} target
| |
| {{Text|<nowiki>'-----</nowiki>|#919191}}
| |
| {{Cl|about:blank|ON}} {{Cl|about:blank|ERROR}} {{Cl|about:blank|GOTO}} abort
| |
| {{Cl|about:blank|OPEN}} {{Text|<nowiki>"I"</nowiki>|#FFB100}}, #1, srcPath$ + src$: {{Cl|about:blank|CLOSE}} #1 {{Text|<nowiki>'file exist check</nowiki>|#919191}}
| |
| {{Cl|about:blank|OPEN}} {{Text|<nowiki>"O"</nowiki>|#FFB100}}, #2, tarPath$ + tar$ + {{Text|<nowiki>".bm"</nowiki>|#FFB100}}: {{Cl|about:blank|CLOSE}} #2 {{Text|<nowiki>'path exist check</nowiki>|#919191}}
| |
| {{Cl|about:blank|ON}} {{Cl|about:blank|ERROR}} {{Cl|about:blank|GOTO}} {{Text|0|#F580B1}}
| |
|
| |
| {{Text|<nowiki>'--- separate source filename part ---</nowiki>|#919191}}
| |
| {{Cl|about:blank|FOR}} po% = {{Cl|about:blank|LEN}}(src$) {{Cl|about:blank|TO}} {{Text|1|#F580B1}} {{Cl|about:blank|STEP}} {{Text|-1|#F580B1}}
| |
| {{Cl|about:blank|IF}} {{Cl|about:blank|MID$}}(src$, po%, {{Text|1|#F580B1}}) = {{Text|<nowiki>"\"</nowiki>|#FFB100}} {{Cl|about:blank|OR}} {{Cl|about:blank|MID$}}(src$, po%, {{Text|1|#F580B1}}) = {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|about:blank|THEN}}
| |
| srcName$ = {{Cl|about:blank|MID$}}(src$, po% + {{Text|1|#F580B1}})
| |
| {{Cl|about:blank|EXIT}} {{Cl|about:blank|FOR}}
| |
| {{Cl|about:blank|ELSEIF}} po% = {{Text|1|#F580B1}} {{Cl|about:blank|THEN}}
| |
| srcName$ = src$
| |
| {{Cl|about:blank|END}} {{Cl|about:blank|IF}}
| |
| {{Cl|about:blank|NEXT}} po%
| |
| {{Text|<nowiki>'--- separate target filename part ---</nowiki>|#919191}}
| |
| {{Cl|about:blank|FOR}} po% = {{Cl|about:blank|LEN}}(tar$) {{Cl|about:blank|TO}} {{Text|1|#F580B1}} {{Cl|about:blank|STEP}} {{Text|-1|#F580B1}}
| |
| {{Cl|about:blank|IF}} {{Cl|about:blank|MID$}}(tar$, po%, {{Text|1|#F580B1}}) = {{Text|<nowiki>"\"</nowiki>|#FFB100}} {{Cl|about:blank|OR}} {{Cl|about:blank|MID$}}(tar$, po%, {{Text|1|#F580B1}}) = {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|about:blank|THEN}}
| |
| tarName$ = {{Cl|about:blank|MID$}}(tar$, po% + {{Text|1|#F580B1}})
| |
| {{Cl|about:blank|EXIT}} {{Cl|about:blank|FOR}}
| |
| {{Cl|about:blank|ELSEIF}} po% = {{Text|1|#F580B1}} {{Cl|about:blank|THEN}}
| |
| tarName$ = tar$
| |
| {{Cl|about:blank|END}} {{Cl|about:blank|IF}}
| |
| {{Cl|about:blank|NEXT}} po%
| |
| {{Cl|about:blank|MID$}}(tarName$, {{Text|1|#F580B1}}, {{Text|1|#F580B1}}) = {{Cl|about:blank|UCASE$}}({{Cl|about:blank|MID$}}(tarName$, {{Text|1|#F580B1}}, {{Text|1|#F580B1}})) {{Text|<nowiki>'capitalize 1st letter</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'---------------------------------------------------------------------</nowiki>|#919191}}
| |
| {{Text|<nowiki>' Depending on the source file's size, one or more array(s) are</nowiki>|#919191}}
| |
| {{Text|<nowiki>' created. This is because some C/C++ compilers seem to have problems</nowiki>|#919191}}
| |
| {{Text|<nowiki>' with arrays with more than 65535 elements. This does not affect the</nowiki>|#919191}}
| |
| {{Text|<nowiki>' write back, as the write function will take this behavior into account.</nowiki>|#919191}}
| |
| {{Text|<nowiki>'---------------------------------------------------------------------</nowiki>|#919191}}
| |
|
| |
| {{Text|<nowiki>'--- init ---</nowiki>|#919191}}
| |
| {{Cl|about:blank|OPEN}} {{Text|<nowiki>"B"</nowiki>|#FFB100}}, #1, srcPath$ + src$
| |
| filedata$ = {{Cl|about:blank|SPACE$}}({{Cl|about:blank|LOF}}({{Text|1|#F580B1}}))
| |
| {{Cl|about:blank|GET}} #1, , filedata$
| |
| {{Cl|about:blank|CLOSE}} #1
| |
| rawdata$ = LzwPack$(filedata$, {{Text|20|#F580B1}})
| |
| {{Cl|about:blank|IF}} rawdata$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|about:blank|THEN}}
| |
| {{Cl|about:blank|OPEN}} {{Text|<nowiki>"O"</nowiki>|#FFB100}}, #1, tarPath$ + tar$ + {{Text|<nowiki>".lzw"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|CLOSE}} #1
| |
| {{Cl|about:blank|OPEN}} {{Text|<nowiki>"B"</nowiki>|#FFB100}}, #1, tarPath$ + tar$ + {{Text|<nowiki>".lzw"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PUT}} #1, , rawdata$
| |
| {{Cl|about:blank|CLOSE}} #1
| |
| packed% = {{Text|-1|#F580B1}}
| |
| {{Cl|about:blank|OPEN}} {{Text|<nowiki>"B"</nowiki>|#FFB100}}, #1, tarPath$ + tar$ + {{Text|<nowiki>".lzw"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|ELSE}}
| |
| packed% = {{Text|0|#F580B1}}
| |
| {{Cl|about:blank|OPEN}} {{Text|<nowiki>"B"</nowiki>|#FFB100}}, #1, srcPath$ + src$
| |
| {{Cl|about:blank|END}} {{Cl|about:blank|IF}}
| |
| fl& = {{Cl|about:blank|LOF}}({{Text|1|#F580B1}})
| |
| cntL& = {{Cl|about:blank|INT}}(fl& / {{Text|32|#F580B1}})
| |
| cntV& = {{Cl|about:blank|INT}}(cntL& / {{Text|8180|#F580B1}})
| |
| cntB& = (fl& - (cntL& * {{Text|32|#F580B1}}))
| |
|
| |
| {{Text|<nowiki>'--- .h include file ---</nowiki>|#919191}}
| |
| {{Cl|about:blank|OPEN}} {{Text|<nowiki>"O"</nowiki>|#FFB100}}, #2, tarPath$ + tar$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// ============================================================"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// === This file was created with MakeCARR.bas by RhoSigma, ==="</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// === use it in conjunction with its respective .bm file. ==="</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// ============================================================"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// --- Array(s) representing the contents of file "</nowiki>|#FFB100}}; srcName$
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// ---------------------------------------------------------------------"</nowiki>|#FFB100}}
| |
| {{Text|<nowiki>'--- read LONGs ---</nowiki>|#919191}}
| |
| tmpI$ = {{Cl|about:blank|SPACE$}}({{Text|32|#F580B1}})
| |
| {{Cl|about:blank|FOR}} vc& = {{Text|0|#F580B1}} {{Cl|about:blank|TO}} cntV&
| |
| {{Cl|about:blank|IF}} vc& = cntV& {{Cl|about:blank|THEN}} numL& = (cntL& {{Cl|about:blank|MOD}} {{Text|8180|#F580B1}}): {{Cl|about:blank|ELSE}} numL& = {{Text|8180|#F580B1}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"static const uint32_t "</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"L"</nowiki>|#FFB100}}; {{Cl|about:blank|LTRIM$}}({{Cl|about:blank|STR$}}(vc&)); {{Text|<nowiki>"[] = {"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" "</nowiki>|#FFB100}}; {{Cl|about:blank|LTRIM$}}({{Cl|about:blank|STR$}}(numL& * {{Text|8|#F580B1}})); {{Text|<nowiki>","</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|FOR}} z& = {{Text|1|#F580B1}} {{Cl|about:blank|TO}} numL&
| |
| {{Cl|about:blank|GET}} #1, , tmpI$: offI% = {{Text|1|#F580B1}}
| |
| tmpO$ = {{Text|<nowiki>" "</nowiki>|#FFB100}} + {{Cl|about:blank|STRING$}}({{Text|88|#F580B1}}, {{Text|<nowiki>","</nowiki>|#FFB100}}): offO% = {{Text|5|#F580B1}}
| |
| {{Cl|about:blank|DO}}
| |
| tmpL& = {{Cl|about:blank|CVL}}({{Cl|about:blank|MID$}}(tmpI$, offI%, {{Text|4|#F580B1}})): offI% = offI% + {{Text|4|#F580B1}}
| |
| {{Cl|about:blank|MID$}}(tmpO$, offO%, {{Text|10|#F580B1}}) = {{Text|<nowiki>"0x"</nowiki>|#FFB100}} + {{Cl|about:blank|RIGHT$}}({{Text|<nowiki>"00000000"</nowiki>|#FFB100}} + {{Cl|about:blank|HEX$}}(tmpL&), {{Text|8|#F580B1}})
| |
| offO% = offO% + {{Text|11|#F580B1}}
| |
| {{Cl|about:blank|LOOP}} {{Cl|about:blank|UNTIL}} offO% > {{Text|92|#F580B1}}
| |
| {{Cl|about:blank|IF}} z& < numL& {{Cl|about:blank|THEN}} {{Cl|about:blank|PRINT}} #2, tmpO$: {{Cl|about:blank|ELSE}} {{Cl|about:blank|PRINT}} #2, {{Cl|about:blank|LEFT$}}(tmpO$, {{Text|91|#F580B1}})
| |
| {{Cl|about:blank|NEXT}} z&
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"};"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|NEXT}} vc&
| |
| {{Text|<nowiki>'--- read remaining BYTEs ---</nowiki>|#919191}}
| |
| {{Cl|about:blank|IF}} cntB& > {{Text|0|#F580B1}} {{Cl|about:blank|THEN}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"static const uint8_t "</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"B[] = {"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" "</nowiki>|#FFB100}}; {{Cl|about:blank|LTRIM$}}({{Cl|about:blank|STR$}}(cntB&)); {{Text|<nowiki>","</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" "</nowiki>|#FFB100}};
| |
| {{Cl|about:blank|FOR}} x% = {{Text|1|#F580B1}} {{Cl|about:blank|TO}} cntB&
| |
| {{Cl|about:blank|GET}} #1, , tmpB%%
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"0x"</nowiki>|#FFB100}} + {{Cl|about:blank|RIGHT$}}({{Text|<nowiki>"00"</nowiki>|#FFB100}} + {{Cl|about:blank|HEX$}}(tmpB%%), {{Text|2|#F580B1}});
| |
| {{Cl|about:blank|IF}} x% <> {{Text|16|#F580B1}} {{Cl|about:blank|THEN}}
| |
| {{Cl|about:blank|IF}} x% <> cntB& {{Cl|about:blank|THEN}} {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>","</nowiki>|#FFB100}};
| |
| {{Cl|about:blank|ELSE}}
| |
| {{Cl|about:blank|IF}} x% <> cntB& {{Cl|about:blank|THEN}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>","</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" "</nowiki>|#FFB100}};
| |
| {{Cl|about:blank|END}} {{Cl|about:blank|IF}}
| |
| {{Cl|about:blank|END}} {{Cl|about:blank|IF}}
| |
| {{Cl|about:blank|NEXT}} x%
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"};"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|END}} {{Cl|about:blank|IF}}
| |
| {{Text|<nowiki>'--- some functions ---</nowiki>|#919191}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// --- Saved full qualified output path and filename, so we've no troubles"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// --- when cleaning up, even if the current working folder was changed"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// --- during program runtime."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// ---------------------------------------------------------------------"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"char "</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Name[8192]; // it's a safe size for any current OS"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// --- Cleanup function to delete the written file, called by the atexit()"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// --- handler at program termination time, if requested by user."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// ---------------------------------------------------------------------"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"void Kill"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Data(void)"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"{"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" remove("</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Name);"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"}"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// --- Function to write the array(s) back into a file, will return the"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// --- full qualified output path and filename on success, otherwise an"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// --- empty string is returned (access/write errors, file truncated)."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"// ---------------------------------------------------------------------"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"const char *Write"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Data(const char *FileName, int16_t AutoClean)"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"{"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" FILE *han = NULL; // file handle"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" int32_t num = NULL; // written elements"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" #ifdef QB64_WINDOWS"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" if (!_fullpath("</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Name, FileName, 8192)) return "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>";"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" #else"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" if (!realpath(FileName, "</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Name)) return "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>";"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" #endif"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" if (!(han = fopen("</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Name, "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>"wb"</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>"))) return "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>";"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" if (AutoClean) atexit(Kill"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Data);"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|FOR}} vc& = {{Text|0|#F580B1}} {{Cl|about:blank|TO}} cntV&
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" num = fwrite(&"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"L"</nowiki>|#FFB100}}; {{Cl|about:blank|LTRIM$}}({{Cl|about:blank|STR$}}(vc&)); {{Text|<nowiki>"[1], 4, "</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"L"</nowiki>|#FFB100}}; {{Cl|about:blank|LTRIM$}}({{Cl|about:blank|STR$}}(vc&)); {{Text|<nowiki>"[0], han);"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" if (num != "</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"L"</nowiki>|#FFB100}}; {{Cl|about:blank|LTRIM$}}({{Cl|about:blank|STR$}}(vc&)); {{Text|<nowiki>"[0]) {fclose(han); return "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>";}"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|NEXT}} vc&
| |
| {{Cl|about:blank|IF}} cntB& > {{Text|0|#F580B1}} {{Cl|about:blank|THEN}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" num = fwrite(&"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"B[1], 1, "</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"B[0], han);"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" if (num != "</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"B[0]) {fclose(han); return "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>";}"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|END}} {{Cl|about:blank|IF}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" fclose(han);"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" return "</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Name;"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"}"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Text|<nowiki>'--- ending ---</nowiki>|#919191}}
| |
| {{Cl|about:blank|CLOSE}} #2
| |
| {{Cl|about:blank|CLOSE}} #1
| |
|
| |
| {{Text|<nowiki>'--- .bm include file ---</nowiki>|#919191}}
| |
| {{Cl|about:blank|OPEN}} {{Text|<nowiki>"O"</nowiki>|#FFB100}}, #2, tarPath$ + tar$ + {{Text|<nowiki>".bm"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'============================================================"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'=== This file was created with MakeCARR.bas by RhoSigma, ==="</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'=== you must $INCLUDE this at the end of your program. ==="</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|IF}} packed% {{Cl|about:blank|THEN}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'=== ---------------------------------------------------- ==="</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'=== If your program is NOT a GuiTools based application, ==="</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'=== then it must also $INCLUDE: 'lzwpacker.bm' available ==="</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'=== from the Libraries Collection here: ==="</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'=== http://qb64phoenix.com/forum/forumdisplay.php?fid=23 ==="</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|END}} {{Cl|about:blank|IF}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'============================================================"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'-----------------"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'--- Important ---"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'-----------------"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' If you need to move around this .bm file and its respective .h file"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' to fit in your project, then make sure the path in the DECLARE LIBRARY"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' statement below does match the actual .h file location. It's best to"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' specify a relative path assuming your QB64 installation folder as root."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'---------------------------------------------------------------------"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Text|<nowiki>'--- writeback function ---</nowiki>|#919191}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'"</nowiki>|#FFB100}}; {{Cl|about:blank|STRING$}}({{Cl|about:blank|LEN}}(tarName$) + {{Text|19|#F580B1}}, {{Text|<nowiki>"-"</nowiki>|#FFB100}})
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'--- Write"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Array$ ---"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'"</nowiki>|#FFB100}}; {{Cl|about:blank|STRING$}}({{Cl|about:blank|LEN}}(tarName$) + {{Text|19|#F580B1}}, {{Text|<nowiki>"-"</nowiki>|#FFB100}})
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' This function will write the array(s) you've created with MakeCARR.bas"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' back to disk and so it rebuilds the original file."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' After the writeback call, only use the returned realFile$ to access the"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' written file. It's the full qualified absolute path and filename, which"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' is made by expanding your maybe given relative path and an maybe altered"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' filename (number added) in order to avoid the overwriting of an already"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' existing file with the same name in the given location. By this means"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' you'll always have safe access to the file, no matter how your current"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' working folder changes during runtime."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' If you wish, the written file can automatically be deleted for you when"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' your program will end, so you don't need to do the cleanup yourself."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'----------"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' SYNTAX:"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' realFile$ = Write"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Array$ (wantFile$, autoDel%)"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'----------"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' INPUTS:"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' --- wantFile$ ---"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' The filename you would like to write the array(s) to, can contain"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' a full or relative path."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' --- autoDel% ---"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' Shows whether you want the auto cleanup (see description above) at"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' the program end or not (-1 = delete file, 0 = don't delete file)."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'----------"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' RESULT:"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' --- realFile$ ---"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' - On success this is the full qualified path and filename finally"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' used after all applied checks, use only this returned filename"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' to access the written file."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' - On failure (write/access) this will be an empty string, so you"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"' should check for this before trying to access/open the file."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'---------------------------------------------------------------------"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"FUNCTION Write"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Array$ (file$, clean%)"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'--- declare C/C++ function ---"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"DECLARE LIBRARY "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); tarPath$; tar$; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>" 'Do not add .h here !!"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" FUNCTION Write"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Data$ (FileName$, BYVAL AutoClean%)"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"END DECLARE"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'--- option _explicit requirements ---"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"DIM po%, body$, ext$, num%"</nowiki>|#FFB100}};
| |
| {{Cl|about:blank|IF}} packed% {{Cl|about:blank|THEN}} {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>", real$, ff%, rawdata$, filedata$"</nowiki>|#FFB100}}: {{Cl|about:blank|ELSE}} {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'--- separate filename body & extension ---"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"FOR po% = LEN(file$) TO 1 STEP -1"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" IF MID$(file$, po%, 1) = "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>"."</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>" THEN"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" body$ = LEFT$(file$, po% - 1)"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" ext$ = MID$(file$, po%)"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" EXIT FOR"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" ELSEIF MID$(file$, po%, 1) = "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>"\"</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>" OR MID$(file$, po%, 1) = "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>"/"</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>" OR po% = 1 THEN"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" body$ = file$"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" ext$ = "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}})
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" EXIT FOR"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" END IF"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"NEXT po%"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'--- avoid overwriting of existing files ---"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"num% = 1"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"WHILE _FILEEXISTS(file$)"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" file$ = body$ + "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>"("</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>" + LTRIM$(STR$(num%)) + "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>")"</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>" + ext$"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" num% = num% + 1"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"WEND"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"'--- write array & set result ---"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|IF}} {{Cl|about:blank|NOT}} packed% {{Cl|about:blank|THEN}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"Write"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Array$ = Write"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Data$(file$ + CHR$(0), clean%)"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|ELSE}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"real$ = Write"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Data$(file$ + CHR$(0), clean%)"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"IF real$ <> "</nowiki>|#FFB100}}; {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Cl|about:blank|CHR$}}({{Text|34|#F580B1}}); {{Text|<nowiki>" THEN"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" ff% = FREEFILE"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" OPEN real$ FOR BINARY AS ff%"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" rawdata$ = SPACE$(LOF(ff%))"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" GET #ff%, , rawdata$"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" filedata$ = LzwUnpack$(rawdata$)"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" PUT #ff%, 1, filedata$"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>" CLOSE ff%"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"END IF"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"Write"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Array$ = real$"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|END}} {{Cl|about:blank|IF}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>"END FUNCTION"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} #2, {{Text|<nowiki>""</nowiki>|#FFB100}}
| |
| {{Text|<nowiki>'--- ending ---</nowiki>|#919191}}
| |
| {{Cl|about:blank|CLOSE}} #2
| |
|
| |
| {{Text|<nowiki>'--- finish message ---</nowiki>|#919191}}
| |
| {{Cl|about:blank|COLOR}} {{Text|10|#F580B1}}: {{Cl|about:blank|PRINT}}: {{Cl|about:blank|PRINT}} {{Text|<nowiki>"file successfully processed..."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|COLOR}} {{Text|9|#F580B1}}: {{Cl|about:blank|PRINT}}: {{Cl|about:blank|PRINT}} {{Text|<nowiki>"You must $INCLUDE the created file (target name + .bm extension) at"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} {{Text|<nowiki>"the end of your program and call the function 'Write"</nowiki>|#FFB100}}; tarName$; {{Text|<nowiki>"Array$(...)'"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} {{Text|<nowiki>"in an appropriate place to write the file back to disk."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|IF}} packed% {{Cl|about:blank|THEN}}
| |
| {{Cl|about:blank|COLOR}} {{Text|12|#F580B1}}: {{Cl|about:blank|PRINT}}: {{Cl|about:blank|PRINT}} {{Text|<nowiki>"Your program must also $INCLUDE 'lzwpacker.bm' available from"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} {{Text|<nowiki>"the Libraries Collection here:"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} {{Text|<nowiki>" http://qb64phoenix.com/forum/forumdisplay.php?fid=23"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|PRINT}} {{Text|<nowiki>"to be able to write back the just processed file."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|KILL}} tarPath$ + tar$ + {{Text|<nowiki>".lzw"</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|END}} {{Cl|about:blank|IF}}
| |
| done:
| |
| {{Cl|about:blank|COLOR}} {{Text|7|#F580B1}}
| |
| {{Cl|about:blank|END}}
| |
| {{Text|<nowiki>'--- error handler ---</nowiki>|#919191}}
| |
| abort:
| |
| {{Cl|about:blank|COLOR}} {{Text|12|#F580B1}}: {{Cl|about:blank|PRINT}}: {{Cl|about:blank|PRINT}} {{Text|<nowiki>"something is wrong with path/file access, check your inputs and try again..."</nowiki>|#FFB100}}
| |
| {{Cl|about:blank|RESUME}} done
| |
|
| |
| {{Text|<nowiki>'</nowiki>|#919191}}{{Text|$INCLUDE:|#55FF55}} {{Text|<nowiki>'QB64Library\LZW-Compress\lzwpacker.bm'</nowiki>|#919191}}
| |
|
| |
| {{CodeEnd}}
| |