"C" Problem mit Pointer für PIC18Fxxx

OP #3971517
Lesenswert?
• ▲
▼
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]);
}
OP #3971701
Lesenswert?
• ▲
▼
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 ?
Gast #3971706
Lesenswert?
• ▲
▼
> 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.
OP #3971812
Lesenswert?
• ▲
▼
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
}
#3971875
Lesenswert?
• ▲
▼
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...
Gast #3971904
Lesenswert?
• ▲
▼
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.
OP #3972090
Lesenswert?
• ▲
▼
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 );
}
#3972333
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren