<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - SpiderBasic</title>
		<link>https://www.developpez.net/forums/</link>
		<description>Forum consacré au développement Web avec SpiderBasic.</description>
		<language>fr</language>
		<lastBuildDate>Fri, 26 Jun 2026 16:50:21 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - SpiderBasic</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>SpiderBasic 4.00 beta 1 est disponible sur votre compte</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183874&amp;goto=newpost</link>
			<pubDate>Mon, 25 May 2026 18:40:43 GMT</pubDate>
			<description>Je ne traduis pas, votre...</description>
			<content:encoded><![CDATA[<div>Je ne traduis pas, votre anglais est meilleur que le mien.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			Hi folks,<br />
<br />
Here is the new 3.30 beta version of SpiderBasic introducing a nice new feature we wanted to implement since a while: async/await support. What does it means for you ? Less callbacks ! The commands can finally wait for there execution to finish and you can code in a more linear fashion.<br />
<br />
For example, using the OpenFileRequester() to display a local image was looking like that:
			
		<hr />
	</div>
</div><div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">Procedure</span> Loaded<span class="br0">&#40;</span>Type, Filename$, ObjectId<span class="br0">&#41;</span>
  <span style="color: #0000ff;">Static</span> x = <span style="color: #cc66cc;">200</span>, y = <span style="color: #cc66cc;">200</span>
&nbsp;
  OpenWindow<span class="br0">&#40;</span><span style="color: #339933;">#PB_Any</span>, x, y, <span style="color: #cc66cc;">300</span>, <span style="color: #cc66cc;">300</span>, Filename$, <span style="color: #339933;">#PB_Window_TitleBar</span> | <span style="color: #339933;">#PB_Window_SizeGadget</span><span class="br0">&#41;</span>
    ImageGadget<span class="br0">&#40;</span><span style="color: #339933;">#PB_Any</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, ImageWidth<span class="br0">&#40;</span>ObjectId<span class="br0">&#41;</span>, ImageHeight<span class="br0">&#40;</span>ObjectId<span class="br0">&#41;</span>, ImageID<span class="br0">&#40;</span>ObjectId<span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp;
  <span style="color: #808080;">; Shift the next opened window</span>
  <span style="color: #808080;">;</span>
  x + <span style="color: #cc66cc;">40</span> 
  y + <span style="color: #cc66cc;">40</span>
<span style="color: #0000ff;">EndProcedure</span>
&nbsp;
&nbsp;
<span style="color: #0000ff;">Procedure</span> LoadingError<span class="br0">&#40;</span>Type, Filename$<span class="br0">&#41;</span>
  <span style="color: #0000ff;">Debug</span> Filename$ + <span style="color: #FF0000;">&quot;: loading error&quot;</span>
<span style="color: #0000ff;">EndProcedure</span>
&nbsp;
&nbsp;
<span style="color: #0000ff;">Procedure</span> RequesterSuccess<span class="br0">&#40;</span><span class="br0">&#41;</span>
&nbsp;
  <span style="color: #808080;">; Process all the selected filename</span>
  <span style="color: #808080;">;</span>
  <span style="color: #0000ff;">While</span> NextSelectedFile<span class="br0">&#40;</span><span class="br0">&#41;</span>
    LoadImage<span class="br0">&#40;</span><span style="color: #339933;">#PB_Any</span>, SelectedFileID<span class="br0">&#40;</span><span class="br0">&#41;</span>, <span style="color: #339933;">#PB_LocalFile</span><span class="br0">&#41;</span> <span style="color: #808080;">; when using #PB_LocalFile, all files selected with OpenFileRequester() are directly available</span>
    Filename$ = SelectedFileName<span class="br0">&#40;</span><span class="br0">&#41;</span>
  <span style="color: #0000ff;">Wend</span>
&nbsp;
<span style="color: #0000ff;">EndProcedure</span>
&nbsp;
<span style="color: #0000ff;">Procedure</span> ButtonEvent<span class="br0">&#40;</span><span class="br0">&#41;</span>
  OpenFileRequester<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;image/*&quot;</span>, @RequesterSuccess<span class="br0">&#40;</span><span class="br0">&#41;</span>, <span style="color: #339933;">#PB_Requester_MultiSelection</span><span class="br0">&#41;</span>
<span style="color: #0000ff;">EndProcedure</span>
&nbsp;
&nbsp;
OpenWindow<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">200</span>, <span style="color: #cc66cc;">45</span>, <span style="color: #FF0000;">&quot;Image viewer&quot;</span>, <span style="color: #339933;">#PB_Window_TitleBar</span><span class="br0">&#41;</span>
ButtonGadget<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">10</span>, <span style="color: #cc66cc;">10</span>, <span style="color: #cc66cc;">180</span>, <span style="color: #cc66cc;">25</span>, <span style="color: #FF0000;">&quot;Open local image...&quot;</span><span class="br0">&#41;</span>
BindGadgetEvent<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>, @ButtonEvent<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">; Register the loading event before calling any resource load command</span>
BindEvent<span class="br0">&#40;</span><span style="color: #339933;">#PB_Event_Loading</span>, @Loaded<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
BindEvent<span class="br0">&#40;</span><span style="color: #339933;">#PB_Event_LoadingError</span>, @LoadingError<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></pre></td></tr></table></code><hr />
</div><div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			Now, the same code using async under the loop makes the code easier to follow and more PureBasic-like
			
		<hr />
	</div>
</div><div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">Procedure</span> ButtonEvent<span class="br0">&#40;</span><span class="br0">&#41;</span>
  x = <span style="color: #cc66cc;">200</span>
  y = <span style="color: #cc66cc;">200</span>
&nbsp;
  Filename$ = OpenFileRequester<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;image/*&quot;</span>, <span style="color: #339933;">#PB_Requester_MultiSelection</span><span class="br0">&#41;</span>
&nbsp;
  <span style="color: #808080;">; Process all the selected filename</span>
  <span style="color: #808080;">;</span>
  <span style="color: #0000ff;">While</span> Filename$
    Image = LoadImage<span class="br0">&#40;</span><span style="color: #339933;">#PB_Any</span>, Filename$, <span style="color: #339933;">#PB_LocalFile</span><span class="br0">&#41;</span> <span style="color: #808080;">; when using #PB_LocalFile, all files selected with OpenFileRequester() are directly available</span>
    <span style="color: #0000ff;">If</span> Image
&nbsp;
      OpenWindow<span class="br0">&#40;</span><span style="color: #339933;">#PB_Any</span>, x, y, <span style="color: #cc66cc;">300</span>, <span style="color: #cc66cc;">300</span>, Filename$, <span style="color: #339933;">#PB_Window_TitleBar</span> | <span style="color: #339933;">#PB_Window_SizeGadget</span><span class="br0">&#41;</span>
        ImageGadget<span class="br0">&#40;</span><span style="color: #339933;">#PB_Any</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, ImageWidth<span class="br0">&#40;</span>Image<span class="br0">&#41;</span>, ImageHeight<span class="br0">&#40;</span>Image<span class="br0">&#41;</span>, ImageID<span class="br0">&#40;</span>Image<span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp;
      <span style="color: #808080;">; Shift the next opened window</span>
      <span style="color: #808080;">;</span>
      x + <span style="color: #cc66cc;">40</span> 
      y + <span style="color: #cc66cc;">40</span>
    <span style="color: #0000ff;">EndIf</span>
&nbsp;
    Filename$ = NextSelectedFilename<span class="br0">&#40;</span><span class="br0">&#41;</span>
  <span style="color: #0000ff;">Wend</span>
<span style="color: #0000ff;">EndProcedure</span>
&nbsp;
OpenWindow<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">200</span>, <span style="color: #cc66cc;">45</span>, <span style="color: #FF0000;">&quot;Image viewer&quot;</span>, <span style="color: #339933;">#PB_Window_TitleBar</span><span class="br0">&#41;</span>
ButtonGadget<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">10</span>, <span style="color: #cc66cc;">10</span>, <span style="color: #cc66cc;">180</span>, <span style="color: #cc66cc;">25</span>, <span style="color: #FF0000;">&quot;Open local images...&quot;</span><span class="br0">&#41;</span>
BindGadgetEvent<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>, @ButtonEvent<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></pre></td></tr></table></code><hr />
</div><div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			This is early work on this and if it works well it be done for the whole commandset. I tested on cordova and it works as expected, but feel free to test and see if it is OK.<br />
<br />
The modified affected commands which now uses await:<br />
<br />
<ul><li style="">CaptureImage()</li><li style="">CloseFile()</li><li style="">CopyFile()</li><li style="">CreateDirectory()</li><li style="">DeleteDirectory()</li><li style="">DeleteFile()</li><li style="">ExamineDirectory()</li><li style="">FetchData()</li><li style="">FileSize()</li><li style="">GetFileAttributes()</li><li style="">GetFileDate()</li><li style="">HTTPRequest()</li><li style="">LoadImage()</li><li style="">LoadJSON()</li><li style="">LoadScript()</li><li style="">LoadSound()</li><li style="">LoadSprite()</li><li style="">LoadXML()</li><li style="">OpenFileRequester()</li><li style="">ReadFile()</li><li style="">RequestFileSystem()</li><li style="">SetCurrentDirectory()</li></ul><br />
<br />
That means that these commands doesn't need a callback anymore and will returns the result directly when the processing is done, actually blocking the program flow.<br />
<br />
Here is the change list for this version:<br />
<br />
 <ul><li style="">   Added: async/await support for most of the commands, callbacks are now optionals and program flow easier to follow !</li><li style="">   Added: FileSystem library to easily act on local files (iOS, Android only)</li><li style="">   Added: Preference library using local storage based on Peter's work (Thanks ! <a rel="nofollow" href="https://github.com/spiderbytes/Preferences" target="_blank">https://github.com/spiderbytes/Preferences</a>)</li><li style="">   Added: CaptureImage() to get an image from the camera (iOS, Android only)</li><li style="">   Added: CreatePasswordHash() and VerifyPasswordHash() based on bcrypt</li><li style="">   Optimized: Splitted the system library to not have all cordova libs included when using a single command</li><li style="">   Optimized: Android app creation should be much faster on Windows</li><li style="">   Changed: NextSelectedFile() to NextSelectedFileName()</li><li style="">   Removed SelectedFileName() and SelectedFileID()</li></ul><br />
<br />
Have fun !<br />
<br />
The Fantaisie Software team
			
		<hr />
	</div>
</div><a rel="nofollow" href="https://forums.spiderbasic.com/viewtopic.php?p=12551&amp;sid=601c0d8352fcb597ab3108e90adb6df5#p12551" target="_blank">Source de l'information </a></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2126/autres-langages/autres-langages/basic/spiderbasic/">SpiderBasic</category>
			<dc:creator>comtois</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183874/autres-langages/autres-langages/basic/spiderbasic/spiderbasic-4-00-beta-1-disponible-compte/</guid>
		</item>
		<item>
			<title>SpiderBasic 3.20 beta 1 est disponible sur votre compte</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180367&amp;goto=newpost</link>
			<pubDate>Sun, 09 Nov 2025 15:01:17 GMT</pubDate>
			<description>---Citation--- 
Hello...</description>
			<content:encoded><![CDATA[<div><div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			Hello everyone,<br />
<br />
A new beta is available which includes a full rework of the vector drawing lib (based on pf-shadoko work) and some interesting new features:<br />
<br />
<ul><li style="">Added: Fully reworked the VectorDrawing library to be much faster than before</li><li style="">Added: PdfVectorOutput(), ExportPdf(), ExportPdfMemory() to easily create PDF</li><li style="">Added: SvgVectorOutput(), ExportSvg(), ExportSvgMemory() to easily create SVG</li><li style="">Added: RemoveMobileItem() and ClearMobileItems() for ListMobile()</li><li style="">Added: MobileTheme() to dynamically switch the mobile libary theme from light to dark</li><li style="">Added: IsDarkMode() to detect if the device is default theme is dark or bright.</li><li style="">Added: #PB_Event_ColorSchemeChanged event to detect switch between dark and bright mode.</li><li style="">Added: CenterX/Y param for VectorSourceCircularGradient()</li><li style="">Added: ClipPath(), FlipCoordinatesX(), FlipCoordinatesY(), VectorSourceImage(), IsInsideStroke()</li><li style="">Added: #PB_Path_Winding mode for FillPath() and oddeven as well</li><li style="">Removed: PathBoundX(), PathBoundY(), PathBoundWidth(), PathBoundHeight()</li></ul>
			
		<hr />
	</div>
</div><a rel="nofollow" href="https://forums.spiderbasic.com/viewtopic.php?t=2864" target="_blank">Source de l'information</a></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2126/autres-langages/autres-langages/basic/spiderbasic/">SpiderBasic</category>
			<dc:creator>comtois</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180367/autres-langages/autres-langages/basic/spiderbasic/spiderbasic-3-20-beta-1-disponible-compte/</guid>
		</item>
	</channel>
</rss>
