Re: seltsamme logik Kategorie: Programmierung (von André H. - 20.04.2007 9:10) | ||
Als Antwort auf seltsamme logik von Manfred - 19.04.2007 14:36 | ||
| ||
Hallo Manfred, Du hast in Deinen Routinen ein paar Fehler. Der bedeutenste liegt hier: string msg50s[4]; //5 zeilen a 30zeichen text ... string msg100s[4]; //5 zeilen a 30zeichen text Du schreibst "5 Zeilen". Definiert hast Du aber nur 4. Das ist der Grund für das Stehenbleiben. Du greifst auf ein jeweils fünftes Element zu, welches garnicht existiert Es werden dann Speicherbereiche überschrieben, welche nichtmehr zu dem definierten Array gehören. Das nächste ist ein fehlendes Semikolon hinter m_param.msg100s[i]="", was der Compiler eigentlich bemängeln sollte: for i = 0 ... 4 {m_param.msg50s[i]="";m_param.msg100s[i]=""} MfG André H. > Hallo cc2net Gemeinde, > > ich habe hier ein etwas seltsames Problem: > > Wenn man versucht zwei String Array in einer Schleife zu löschen, > bleibt die C-Controll Station hängen! > Löscht man - nur - das zweite String Array nicht in einer schleife, sondern einzeln, > funktioniert alles. > Das Problem tritt nicht nur in der Initialisierung auf, sondern auch in anderen Programm Modulen. > > Das Programm ist in mehrere Module aufgeteilt. > 1. Modul alle globalen Variablen und Konst. > 2. alle globalen Funktionen > 3. Initialisierung > 4. pc-ausgabe über hwcom > . > . > usw. > > > > im 1. Modul: m_param > . > . > . > > > //m_pc > int status00; //zeit & Temp normale Ausgabe > int status01; //zeit & sonst. > int msg50; //System Init > string msg50s[4]; //5 zeilen a 30zeichen text > int msg100; //fehler > string msg100s[4]; //5 zeilen a 30zeichen text > int msg_ok; //hwcom frei > int pc_com_ausg[10]; //fehler - grund der Ausgabe zum PC > . > . > . > . > usw. > > Die beiden String Array werden Initialisiert > > ------------------------------------------------------------------------ > hier sollen die beiden String Array gelöscht werden: > > Modul m_init > > 1. Versuch > > for i = 0 ... 4 > {m_param.msg50s[i]="";m_param.msg100s[i]=""} > oder > > for i = 0 ... 4 > {str.clear (m_param.msg50s[i]);str.clear (m_param.msg100s[i])} > > nach der 2.ten Schleife, c-comtroll steht (getestet mit LED ein/aus) > > ........................................................................ > 2. Versuch > > > for i = 0 ... 4 str.clear (m_param.msg50s[i]); > for i = 0 ... 4 str.clear (m_param.msg100s[i]); > > oder > > for i = 0 ... 4 m_param.msg50s[i]=""; > for i = 0 ... 4 m_param.msg100s[i]=""; > > gleiche Reaktion wie vorher! > > ........................................................................ > 3. versuch > > for i = 0 ... 4 str.clear (m_param.msg50s[i]); > str.clear (m_param.msg100s[0]); > str.clear (m_param.msg100s[1]); > str.clear (m_param.msg100s[2]); > str.clear (m_param.msg100s[3]); > str.clear (m_param.msg100s[4]); > . > . > . > usw. > > mit diesem Programm läuft die C-Controll ganz normal weiter!! > ........................................................................ > > In weiteren Modulen tritt das gleich Problem auf. Die String Variablen werden ausgegeben, und anschlie�end gelöscht. > Bei der Stringausgabe in einer Schleife über hwcom zum PC werden teilweise > falsche Zeichen oder zu viele Zeichen ausgegeben. > > Das Programm funktioniert mit dieser Konstruktion soweit, aber das ist keine saubere Programmierung. > Au�erdem bleibt die Logik irgendwo auf der Strecke. > > Vielleicht hatte jemand so ein ähnliches Problem, und kann mir helfen > > Manfred > > Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: Re: seltsamme logik (von Manfred - 20.04.2007 11:34) Re: seltsamme logik (von André H. - 20.04.2007 20:40) |