<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Finding the end of a datafile</title>
		<link>http://www.allegro.cc/forums/view/589650</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 21 Jan 2007 02:49:10 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How would I go about finding out how many files are within a datafile. This is primarily for loading datafiles containing &quot;tile gfx&quot; within my map editor. I have a button within my map editor which allows me to load new datafiles at run time but the array of &quot;buttons&quot; that represent each file within the datafile needs to know how many their are, otherwise it reads to far into the datafile if I have to scroll through the objs.<br />Hope that makes sense :/</p><p>Thanks,
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tomoso)</author>
		<pubDate>Sun, 21 Jan 2007 01:06:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I believe it&#39;s called DAT_END
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Sun, 21 Jan 2007 01:28:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>And what do I do with DAT_END? I want to convert it to an integer for use with loops. I was thinking about adding an obj at the end of a datafile called &quot;END_OBJ&quot; or something, and when the datafiles loaded using 
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/find_datafile_object" target="_blank"><span class="a">find_datafile_object</span></a><span class="k2">(</span><span class="k1">const</span> <a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span>dat, <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>objectname<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
If it returns null datafile is invalid, otherwise use<br /><span class="source-code"><a href="http://www.allegro.cc/manual/get_datafile_property" target="_blank"><span class="a">get_datafile_property</span></a><span class="k2">(</span><span class="k1">const</span> <a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span>dat, <span class="k1">int</span> type<span class="k2">)</span><span class="k2">;</span></span><br />I just don&#39;t know which &quot;type&quot; I&#39;m looking for to find its ID. I need to get the number of the obj thats defined when you create a header for the datafile.<br />If you could elaborate on how to use DAT_END, I think that would be easier <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><p>Cheers
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tomoso)</author>
		<pubDate>Sun, 21 Jan 2007 01:39:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>From the manual:</p><div class="source-code snippet"><div class="inner"><pre>   <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> dat<span class="k3">&lt;</span>i&gt;.type <span class="k3">!</span><span class="k3">=</span> DAT_END<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_761.html" target="_blank">stricmp</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/get_datafile_property" target="_blank"><span class="a">get_datafile_property</span></a><span class="k2">(</span>dat<span class="k3">+</span>i, <a href="http://www.allegro.cc/manual/DAT_ID" target="_blank"><span class="a">DAT_ID</span></a><span class="k2">(</span><span class="s">'N'</span>,<span class="s">'A'</span>,<span class="s">'M'</span>,<span class="s">'E'</span><span class="k2">)</span><span class="k2">)</span>,
   <span class="s">"my_object"</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
   <span class="c">/* found the object at index i */</span>
      <span class="k2">}</span>
   <span class="k2">}</span>
   <span class="c">/* not found... */</span>
</pre></div></div><p>

Do you understand now how to use DAT_END?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Faerber)</author>
		<pubDate>Sun, 21 Jan 2007 01:49:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>(untested)
</p><div class="source-code snippet"><div class="inner"><pre>df <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a><span class="k2">(</span><span class="s">"moretiles.dat"</span><span class="k2">)</span><span class="k2">;</span>
<span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span> df<span class="k2">)</span> <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span> <span class="c">// error</span>

<span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> df<span class="k3">&lt;</span>i&gt;.type <span class="k3">!</span><span class="k3">=</span> DAT_END <span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="k2">{</span>
   <span class="c">// do whatever you want with df&lt;i&gt;</span>
   <span class="c">// You can choose to process only those where df&lt;i&gt;.type == DAT_BITMAP</span>

   <span class="c">// df&lt;i&gt;.dat is a pointer to the item (ie: BITMAP *)</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Sun, 21 Jan 2007 01:50:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oh I don&#39;t know maybe it&#39;s called a manual?</p><div class="source-code snippet"><div class="inner"><pre> <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> dat<span class="k3">&lt;</span>i&gt;.type <span class="k3">!</span><span class="k3">=</span> DAT_END<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Sun, 21 Jan 2007 01:51:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Michael Faerber said:</div><div class="quote"><p>
Do you understand now how to use DAT_END?
</p></div></div><p>
Yes thankyou. <img src="http://www.allegro.cc/forums/smileys/kiss.gif" alt=":-*" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tomoso)</author>
		<pubDate>Sun, 21 Jan 2007 02:49:10 +0000</pubDate>
	</item>
</rss>
