Hallo bei dem guten Beitrag http://www.mikrocontroller.net/articles/Festkommaarithmetik bin ich auf ein Problem für PIC18Fxxx gestoßen. Ich bekomme main.c:129: error: (183) function or function pointer required main.c:129: error: (981) pointer required im Bezug auf den String. Hat jemand eine Idee wie man das für Microchip XC8 PIC18Fxxx CPU lösen kann. void my_print_LCD(char* string, uint8_t start, uint8_t komma, uint8_t frac) { uint8_t i; // Zähler uint8_t flag=0; // Merker für führende Nullen // Vorzeichen ausgeben if (string[0]=='-') lcd_data('-'); else lcd_data(' '); // Vorkommastellen ohne führende Nullen ausgeben for(i=start; i<komma; i++) { if (flag==1 || string[i]!='0') { lcd_data(string[i]); flag = 1; } else lcd_data(' '); // Leerzeichen } lcd_data(','); // Komma ausgeben // Nachkommastellen ausgeben for(; i<(komma+frac); i++) lcd_data(string[i]); }
Martin Michael schrieb: > main.c:129: error: (183) function or function pointer required > main.c:129: error: (981) pointer required wenn man jetzt noch wüsste was die die Zeile 129 ist.
Das ist doch klar da gibt es ja nur einen String void my_print_LCD(char* string, uint8_t start, uint8_t komma, uint8_t frac) { uint8_t i; // Zähler uint8_t flag=0; // Merker für führende Nullen // Vorzeichen ausgeben if (string[0]=='-') lcd_data('-'); else lcd_data(' '); // Vorkommastellen ohne führende Nullen ausgeben for(i=start; i<komma; i++) { /// hier if (flag==1 || string[i]!='0') { lcd_data(string[i]); //// hier flag = 1; } else lcd_data(' '); // Leerzeichen } lcd_data(','); // Komma ausgeben // Nachkommastellen ausgeben for(; i<(komma+frac); i++) lcd_data(string[i]); //// hier } Kann man das formatieren ?
> Das ist doch klar da gibt es ja nur einen String wenn dir es klar ist dann löse doch keine Problem selber. > for(i=start; i<komma; i++) { /// hier und was soll uns das /// hier sagen? Dort kommt gar kein string vor. > Kann man das formatieren ? klar, einfach mal lesen was beim senden eine Post alles da steht.
Martin Michael schrieb: > Das ist doch klar da gibt es ja nur einen String Der genau 5 mal vorkommt. > for(i=start; i<komma; i++) { /// hier > lcd_data(string[i]); //// hier > for(; i<(komma+frac); i++) lcd_data(string[i]); //// hier Du hast also 3 Zeilen 129??? > Kann man das formatieren ?
1 | [c]C-Code[/c] |
nenn mal alle string in str um... vielleicht wird von deiner umgebung string als typ vorgegeben oder so? kann sonst keinen fehler erkennen auf die schnelle...
void my_print_LCD(char* DerSTR, uint8_t start, uint8_t komma, uint8_t frac) { uint8_t i; // Zähler uint8_t flag=0; // Merker für führende Nullen // Vorzeichen ausgeben if (DerSTR[0]=='-') lcd_data('-'); else lcd_data(' '); // Vorkommastellen ohne führende Nullen ausgeben for(i=start; i<komma; i++) { /// hier if (flag==1 || DerSTR[i]!='0') { lcd_data(DerSTR[i]); //// hier flag = 1; } else lcd_data(' '); // Leerzeichen } lcd_data(','); // Komma ausgeben // Nachkommastellen ausgeben for(; i<(komma+frac); i++) lcd_data(DerSTR[i]); //// hier }
Du willst nicht, dass man dir hilft, oder? Trotzig einfach geänderten Sourcecode hier reinknallen, ohne weiteren Kommentar, bringt doch nichts. Verrate doch endlich mal, welche genau die Zeile 129 in main.c ist. Ich könnte ja fast wetten, dass es die (unsichtbare) Zeile ist, in der my_print_LCD() aufgerufen wird...
Martin Michael schrieb: > void my_print_LCD(char* DerSTR, uint8_t start, uint8_t komma, uint8_t > frac) { > ... Was willst du uns mit diesem Code jetzt sagen, außer dass du es immer noch nicht geschafft hast die Code-Formatierung zu verwenden und nachzusehen welche Zeile Zeile 129 ist?
wenn ich richtig sehe, dann ist der Code doch 1zu1 aus dem genannten Artikel => Der Fehler liegt vermutlich nicht in diesem Abschnitt Alle Fehlermeldungen zeigen und die entsprchenden Codezeilen, wo der Fehler auftritt plus fünf Zeilen davor und danach.
Martin Michael schrieb: > Das Problem taucht auf beim XC8 Compiler von Microchip und? Dort gibt es wo keine Zeilennummern.
Martin Michael schrieb: > Das Problem taucht auf beim XC8 Compiler von Microchip Noch mehr Infos mit denen man nicht viel anfangen kann... Willst du uns nicht endlich sagen was in dieser Zeile 129 steht? BTW: Wenn du keine Hilfe willst ist es zeitsparender wenn du keinen Thread eröffnest.
Max H. schrieb: > BTW: Wenn du keine Hilfe willst ist es zeitsparender wenn du keinen > Thread eröffnest. Das frage ich mich auch, möchte der TO Hilfe oder ist es dem nur langweilig. Falls Hilfe gewünscht, entsprechende Fragen beantworten, die gestellt worden sind...
Oh Sorry ich sehe wo das Problem liegt mein Denkfehler war zu glauben lcd_data ist ein String Array aber es ist eine Funktion sorry mein Fehler // Sendet ein Datenbyte an das LCD void lcd_data( uint8_t data ) { LCD_PORT |= (1<<LCD_RS); // RS auf 1 setzen lcd_out( data ); // zuerst die oberen, lcd_out( data<<4 ); // dann die unteren 4 Bit senden _delay_us( LCD_WRITEDATA_US ); }
Martin Michael schrieb: > Oh Sorry ich sehe wo das Problem liegt Wenn du um 14:08 gepostet hättest was in der Zeile 129 steht wären wir vllt. schon vor 4.5 Stunden so weit gewesen. P.S.: Was war eigentlich so verdammt schwierig daran zu Posten was in dieser Zeile 129 steht?
Und danke auch für das Posten der Funktion lcd_data(), die auch fehlerfrei aussieht, und mit dem beschriebenen Problem (Zeile 129) vermutlich nicht das Geringste zu tun haben wird. Der Fehler in Zeile 129 scheint aber dermaßen peinlich zu sein, dass du ihn wirklich besser für dich behältst. Da steht wahrscheinlich lcd_data = "Hallo"; oder so.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.