<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Hmm... Ja.. vielleicht Protokoll zerlegung?]]></title><description><![CDATA[<p>Halli Hallo,</p>
<p>ich bin gerade dabei eine Software zu schreiben, welche Dateien in HPGL Format handelt. Jetzt bin ich an einem Punkt angekommen wo ich nicht mehr nur speziell auf ein HPGL Command Konzentriert sonder auf mehrere.</p>
<p>Hier einmal die Liste:</p>
<p><strong>Commands</strong></p>
<p>Instruction Arguments<br />
AA Arc Absolute x,y,angle(,tolerance)<br />
AF Advance page<br />
AH Advance page<br />
AP Automatic Pen Operations n<br />
AR Arc Relative x,y,angle(,tolerance)<br />
AS Acceleration Select acceleration(,pennumber)<br />
BF Buffer Plot<br />
BL Buffer label string<br />
CA Select Alternative Charset set<br />
CC Character chord angle angle<br />
CI Circle radius(,tolerance)<br />
CM Character Selection Mode switchmode(,fallbackmode)<br />
CP Character Plot spaces,lines<br />
CS Select Standard Charset set<br />
CT Chord Tolerance n<br />
CV Curved line generator n(,inputdelay)<br />
CD Digitize Clear<br />
DF Default<br />
DI Absolute Direction run,rise<br />
DL Define Download character charnumber(,pencontrol),x,y(...)<br />
DP Digitze Point<br />
DR Relative Direction run.rise<br />
DS Designate Charset slot,set<br />
DT Define Label Terminator terminator<br />
EA Edge Rectangle Absolute x,y<br />
EP Edge Polygon<br />
ER Edge Rectangle Relative x,y<br />
ES Extra Space spaces(,lines)<br />
EW Edge Wedge radius,startangle,sweepangle(,tolerance)<br />
FP Fill Polygon<br />
FS Force Select force(.pennumber)<br />
FT Fill Type type(,spacing(,angle))<br />
GC Group Count countnumber<br />
GM Graphics Memory (polygonbuff)(,downloadbuff)(,replotbuff)(,vectorbuff)<br />
GP Group Pen (groupnumber(,pennumber(,numberofpens,(length))))<br />
IM Input Mask emaskvalue(,smaskvalue(,pmaskvalue))<br />
IN Initialize<br />
IP Input p1 and p2 x,y(,x,y)<br />
IV Invoke Character Slot slot,(left)<br />
IW Input Window x,y,x,y<br />
KY Define Key key(,function)<br />
LB Label string<br />
LO Label Origin positionnumber<br />
LT Line Type patternnumber(,patternlength)<br />
NR Not Ready<br />
PA Plot Absolute x,y(,...)<br />
PB Print Buffered Label<br />
PD Pen Down x,y(,...)<br />
PG Page Feed n<br />
PM Polygon Mode n<br />
PR Plot Relative x,y(,...)<br />
PT Pen Thickness thickness<br />
PU Pen Up x,y(,...)<br />
RA Fill Rectangle Absolute x,y<br />
RO Rotate Coordinate System n<br />
RP Replot n<br />
RR Fill Rectangle Relative x,y<br />
SA Select Alternative Charset<br />
SC Scale x,y,x,y(,type(,left,bottom))<br />
SG Select Pen Group groupnumber<br />
SI Absolute Character Size width,height<br />
SL Character Slant tantheta<br />
SM Symbol Mode character<br />
SP Select Pen pennumber<br />
SR Relative Character Size width,height<br />
SS Select Standard Charset<br />
TL Tick Length tp(,tn)<br />
UC User Defined Character (pencontrol,)x,y<br />
UF User Defined Fill gap1(,gap2,...gap20)<br />
VS Velocity Select speed(,pennumber)<br />
WD Write to Display string<br />
WG Fill Wedge radius,startangle,sweepangle(,tolerance)<br />
XT X Tick<br />
YT Y Tick</p>
<p>Diese Commands liegen in einer einfachen Textdatei vor.<br />
Wie z.B.</p>
<p>IN;<br />
PU;<br />
SP1;<br />
PA 1000,2300;</p>
<p>usw....</p>
<p>Bis jetzt habe ich mein Programm immer nur auf das PA Command gesetzt.</p>
<p>Wie funktioniert es aber wenn ich hier mehrere solcher Commands habe das ich auf diese dann speziell mit Subroutinen reagieren kann wie bei einer switch case funktion?</p>
<p>Also nochmals.</p>
<p>Ich habe eine Datei in der die oben genannten Commands vorkommen.</p>
<p>Wie schreibt man dazu eine routine die eine Auswertung jeder zeile macht und dann eine Subroutine ausführt?</p>
<p>Ich hätte es jetzt so gemacht, aber mit scheint dies kein guter Lösungsansatz:</p>
<pre><code>sscanf(LINE, &quot;%s;&quot;, &amp;String);

if (String == &quot;IN&quot;)
{
 Initialisation();
}
if (String == &quot;PU&quot;)
{
 Heben();
}

// ---------- Extremes Beispiel ---------
if (String == &quot;PA&quot;)
{
 sscanf (LINE, &quot;PA %i, %i;P%c;&quot;, &amp;Xwert, &amp;Ywert, &amp;Zupdown);
 Fahren(Xwert, Ywert, Zupdown);
}
...
</code></pre>
<p>Ist das der Richtige weg? Oder geht es angenehmer?</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191826/hmm-ja-vielleicht-protokoll-zerlegung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 16:12:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191826.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Sep 2007 23:41:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hmm... Ja.. vielleicht Protokoll zerlegung? on Thu, 06 Sep 2007 23:41:12 GMT]]></title><description><![CDATA[<p>Halli Hallo,</p>
<p>ich bin gerade dabei eine Software zu schreiben, welche Dateien in HPGL Format handelt. Jetzt bin ich an einem Punkt angekommen wo ich nicht mehr nur speziell auf ein HPGL Command Konzentriert sonder auf mehrere.</p>
<p>Hier einmal die Liste:</p>
<p><strong>Commands</strong></p>
<p>Instruction Arguments<br />
AA Arc Absolute x,y,angle(,tolerance)<br />
AF Advance page<br />
AH Advance page<br />
AP Automatic Pen Operations n<br />
AR Arc Relative x,y,angle(,tolerance)<br />
AS Acceleration Select acceleration(,pennumber)<br />
BF Buffer Plot<br />
BL Buffer label string<br />
CA Select Alternative Charset set<br />
CC Character chord angle angle<br />
CI Circle radius(,tolerance)<br />
CM Character Selection Mode switchmode(,fallbackmode)<br />
CP Character Plot spaces,lines<br />
CS Select Standard Charset set<br />
CT Chord Tolerance n<br />
CV Curved line generator n(,inputdelay)<br />
CD Digitize Clear<br />
DF Default<br />
DI Absolute Direction run,rise<br />
DL Define Download character charnumber(,pencontrol),x,y(...)<br />
DP Digitze Point<br />
DR Relative Direction run.rise<br />
DS Designate Charset slot,set<br />
DT Define Label Terminator terminator<br />
EA Edge Rectangle Absolute x,y<br />
EP Edge Polygon<br />
ER Edge Rectangle Relative x,y<br />
ES Extra Space spaces(,lines)<br />
EW Edge Wedge radius,startangle,sweepangle(,tolerance)<br />
FP Fill Polygon<br />
FS Force Select force(.pennumber)<br />
FT Fill Type type(,spacing(,angle))<br />
GC Group Count countnumber<br />
GM Graphics Memory (polygonbuff)(,downloadbuff)(,replotbuff)(,vectorbuff)<br />
GP Group Pen (groupnumber(,pennumber(,numberofpens,(length))))<br />
IM Input Mask emaskvalue(,smaskvalue(,pmaskvalue))<br />
IN Initialize<br />
IP Input p1 and p2 x,y(,x,y)<br />
IV Invoke Character Slot slot,(left)<br />
IW Input Window x,y,x,y<br />
KY Define Key key(,function)<br />
LB Label string<br />
LO Label Origin positionnumber<br />
LT Line Type patternnumber(,patternlength)<br />
NR Not Ready<br />
PA Plot Absolute x,y(,...)<br />
PB Print Buffered Label<br />
PD Pen Down x,y(,...)<br />
PG Page Feed n<br />
PM Polygon Mode n<br />
PR Plot Relative x,y(,...)<br />
PT Pen Thickness thickness<br />
PU Pen Up x,y(,...)<br />
RA Fill Rectangle Absolute x,y<br />
RO Rotate Coordinate System n<br />
RP Replot n<br />
RR Fill Rectangle Relative x,y<br />
SA Select Alternative Charset<br />
SC Scale x,y,x,y(,type(,left,bottom))<br />
SG Select Pen Group groupnumber<br />
SI Absolute Character Size width,height<br />
SL Character Slant tantheta<br />
SM Symbol Mode character<br />
SP Select Pen pennumber<br />
SR Relative Character Size width,height<br />
SS Select Standard Charset<br />
TL Tick Length tp(,tn)<br />
UC User Defined Character (pencontrol,)x,y<br />
UF User Defined Fill gap1(,gap2,...gap20)<br />
VS Velocity Select speed(,pennumber)<br />
WD Write to Display string<br />
WG Fill Wedge radius,startangle,sweepangle(,tolerance)<br />
XT X Tick<br />
YT Y Tick</p>
<p>Diese Commands liegen in einer einfachen Textdatei vor.<br />
Wie z.B.</p>
<p>IN;<br />
PU;<br />
SP1;<br />
PA 1000,2300;</p>
<p>usw....</p>
<p>Bis jetzt habe ich mein Programm immer nur auf das PA Command gesetzt.</p>
<p>Wie funktioniert es aber wenn ich hier mehrere solcher Commands habe das ich auf diese dann speziell mit Subroutinen reagieren kann wie bei einer switch case funktion?</p>
<p>Also nochmals.</p>
<p>Ich habe eine Datei in der die oben genannten Commands vorkommen.</p>
<p>Wie schreibt man dazu eine routine die eine Auswertung jeder zeile macht und dann eine Subroutine ausführt?</p>
<p>Ich hätte es jetzt so gemacht, aber mit scheint dies kein guter Lösungsansatz:</p>
<pre><code>sscanf(LINE, &quot;%s;&quot;, &amp;String);

if (String == &quot;IN&quot;)
{
 Initialisation();
}
if (String == &quot;PU&quot;)
{
 Heben();
}

// ---------- Extremes Beispiel ---------
if (String == &quot;PA&quot;)
{
 sscanf (LINE, &quot;PA %i, %i;P%c;&quot;, &amp;Xwert, &amp;Ywert, &amp;Zupdown);
 Fahren(Xwert, Ywert, Zupdown);
}
...
</code></pre>
<p>Ist das der Richtige weg? Oder geht es angenehmer?</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1360519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360519</guid><dc:creator><![CDATA[Magge2k]]></dc:creator><pubDate>Thu, 06 Sep 2007 23:41:12 GMT</pubDate></item><item><title><![CDATA[Reply to Hmm... Ja.. vielleicht Protokoll zerlegung? on Fri, 07 Sep 2007 04:11:52 GMT]]></title><description><![CDATA[<p>würde ein Hashtable anlegen... dieser beinhalte alle Befehle! Wobei du wahrscheinlich mit C arbeitetest, da legst ein eigenes Array an mit den befehlen... danach durchsuchst dieses nach dem Command, und kannst bei jedem eintrag spez. aufgaben vergeben über funktionspointer...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1360532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360532</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 07 Sep 2007 04:11:52 GMT</pubDate></item><item><title><![CDATA[Reply to Hmm... Ja.. vielleicht Protokoll zerlegung? on Fri, 07 Sep 2007 04:38:38 GMT]]></title><description><![CDATA[<p>Du koenntest dir auch mal Lex und Yacc anschauen. Zwei sehr nuetzliche Tools, ist bei mir aber schon ein bischen her, dass ich die benutzt habe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1360535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360535</guid><dc:creator><![CDATA[Taurin]]></dc:creator><pubDate>Fri, 07 Sep 2007 04:38:38 GMT</pubDate></item><item><title><![CDATA[Reply to Hmm... Ja.. vielleicht Protokoll zerlegung? on Fri, 07 Sep 2007 07:11:20 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Wobei du wahrscheinlich mit C arbeitetest, da legst ein eigenes Array an mit den befehlen... danach durchsuchst dieses nach dem Command, und kannst bei jedem eintrag spez. aufgaben vergeben über funktionspointer...</p>
</blockquote>
<p>Ich würde dir in dem Fall eine Map empfehlen. Der zugriff ist da etwas schneller.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1360581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360581</guid><dc:creator><![CDATA[Chris++ 0]]></dc:creator><pubDate>Fri, 07 Sep 2007 07:11:20 GMT</pubDate></item><item><title><![CDATA[Reply to Hmm... Ja.. vielleicht Protokoll zerlegung? on Wed, 12 Sep 2007 19:00:40 GMT]]></title><description><![CDATA[<p>ah ja danke für die Antworten... aber gibts dazu auch einmal Codeschnippsel?</p>
<p>Weil ich hab mir bis jetzt alles in C selbst beigebracht und das ist mir neu... also bräuchte ich ein Beispiel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364240</guid><dc:creator><![CDATA[Magge2k]]></dc:creator><pubDate>Wed, 12 Sep 2007 19:00:40 GMT</pubDate></item><item><title><![CDATA[Reply to Hmm... Ja.. vielleicht Protokoll zerlegung? on Wed, 12 Sep 2007 19:56:12 GMT]]></title><description><![CDATA[<p>ich würd boost::spirit verwenden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Schau mal im Magazin, da gibt es nen Artikel dazu. Und natürlich die Doku auf <a href="http://boost.org" rel="nofollow">boost.org</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364273</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Wed, 12 Sep 2007 19:56:12 GMT</pubDate></item><item><title><![CDATA[Reply to Hmm... Ja.. vielleicht Protokoll zerlegung? on Wed, 12 Sep 2007 20:38:44 GMT]]></title><description><![CDATA[<p>Magge2k schrieb:</p>
<blockquote>
<p>ah ja danke für die Antworten... aber gibts dazu auch einmal Codeschnippsel?</p>
</blockquote>
<p>--&gt; <a href="http://www-user.tu-chemnitz.de/~heha/viewzip.cgi/hs_freeware/hp2xx_hs.zip/" rel="nofollow">http://www-user.tu-chemnitz.de/~heha/viewzip.cgi/hs_freeware/hp2xx_hs.zip/</a><br />
(hpgl.c)<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364298</guid><dc:creator><![CDATA[Undertaker]]></dc:creator><pubDate>Wed, 12 Sep 2007 20:38:44 GMT</pubDate></item><item><title><![CDATA[Reply to Hmm... Ja.. vielleicht Protokoll zerlegung? on Thu, 13 Sep 2007 12:55:53 GMT]]></title><description><![CDATA[<p>Oh ja sehr cool, vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364647</guid><dc:creator><![CDATA[Magge2k]]></dc:creator><pubDate>Thu, 13 Sep 2007 12:55:53 GMT</pubDate></item><item><title><![CDATA[Reply to Hmm... Ja.. vielleicht Protokoll zerlegung? on Thu, 04 Oct 2007 18:50:58 GMT]]></title><description><![CDATA[<p>Hiho,</p>
<p>so hab n neues Problem, aber ich dachte ich kann des auch in diesem Thread erfragen, weil dann brauch ich keinen neuen aufmachen....</p>
<p>Folgendes:</p>
<p>Ich habe ja eine Datei in dem die X und Y Koordinaten der Fahrwege für eine Fräse gegeben sind. Dies schaut Folgender Maßen aus &quot;PA122,1234;&quot; also PA (X-Wert),(Ywert); Dieser befehl kann entweder mehrmals in einer Zeile vorkommen oder Zeilenweise anhängig vom Programm mit dem die Datei erstellt wurde.</p>
<p>Ich möchte jetzt diese datei mit c++ öffnen, die werte auslesen und in dieser form speichern.</p>
<p>z.B.</p>
<p>PA1234,3456;<br />
PA3452,7434;</p>
<p>in</p>
<p>Koordinaten[0].x = 1234;<br />
Koordinaten[0].y = 3456;<br />
Koordinaten[1].x = 3452;<br />
Koordinaten[1].y = 7434;<br />
...<br />
usw.<br />
...</p>
<p>Jetzt wollte ich diesen Programmcode verwenden nur sehe ich da ein Problem... je nach dem können die Koordinaten zwischen 1 und 99999999999999 variieren.. und ich möchte ja nicht schon von vornherein so viel speicher platz reservieren, weil das müsste ich wenn ich folgenden Code verwende. Da ich Koordinaten[12] ja definieren muss und eigentlich sollte das variabel sein je nach dem was ich für eine Datei öffne...</p>
<pre><code>typedef struct tagVERTEX
{
  int x, y, z;
} VERTEX;

VERTEX Koordinaten[9999];

...

void main...

FILE *filein;
  char oneline[255];
  char Line[255];

  filein = fopen(OpenDialog1-&gt;FileName.c_str(), &quot;rt&quot;);	        // File to load

  fseek(filein, 0, SEEK_SET);

  int loop = 0;
  int wert = 0;
  //for (int loop = 0; loop &lt; 12; loop++)
  do
   {
        fgets(oneline, 100, filein);

        if (sscanf(oneline, &quot;PA%i,%i;%s&quot;, &amp;x, &amp;y, &amp;zup))
        {

         Memo1-&gt;Lines-&gt;Add(oneline);

         if (zup[0] == 'P' &amp;&amp; zup[1] == 'U')
         {
          z = 0;
         }
         if (zup[0] == 'P' &amp;&amp; zup[1] == 'D')
         {
          z = 1;
         }

         //x = x / 1000;
         //y = y / 1000;

	 Koordinaten[wert].x = x;
	 Koordinaten[wert].y = y;
         Koordinaten[wert].z = z;

         wert++;

        }
        loop++;
    }
    while (loop != 23);

  fclose(filein);
</code></pre>
<p>Oder gibt es eine elegantere Art das Problem zu lösen?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378139</guid><dc:creator><![CDATA[Magge2k]]></dc:creator><pubDate>Thu, 04 Oct 2007 18:50:58 GMT</pubDate></item></channel></rss>