Mein Job bringt mich noch um ... jetzt ist es wieder ruhiger und ich kann "weiter"machen.
Wie von Euch vorgeschlagen, soll ich - um meine Dateien alphabetisch sortieren zu können - mit Pointern arbeiten. Der Sinn ist mir klar, die Anwendung ist etwas anderes :o .
Aber bevor ich mich mit den Sortiermöglichkeiten beschäftige, scheitere ich an den Strings und Chars ... (wie wohl viele Anfänger).
Mein struct:
//
struct listEintrag // "Datensatz" anlegen
{
char soundFile[14]; // Variable in struct
listEintrag* next; // Zeiger in struct
};
const int listMax = 20; // maximale Größe der Einträge (Liste)
listEintrag fileListe[listMax]; // Dateiliste mit Größe definieren
listEintrag* first; // Zeiger auf Anfang der Liste
byte anzFiles; // Anzahl der eingefügten Files
Jetzt möchte ich meine fileListe mit den eingelesenen Dateinamen "füllen".
Dies habe ich mir wie folgt vorgestellt:
// Files einlesen
void FilesEinlesen(File pfad, int numTabs)
{
anzFiles = 0;
while(true)
{
//if (DEBUG == 1) Serial.println("lesen"); // Test
File element = pfad.openNextFile(); // Einträge im Pfad nacheinander lesen
if (! element) // wenn kein Eintrag mehr da ist ..
{
//if (DEBUG == 1) Serial.println("break"); // Test
break; // raus aus der Schleife
}
if (! element.isDirectory() && numTabs == 0) // Verzeichnis und Systemdatei ausschließen
{ // numTabs=0 -> Ohne Systemdateien und Verzeichnisse
if (DEBUG == 1) Serial.println(element.name()); // Test
fileListe[anzFiles].soundFile = element.name(); //
fileListe[anzFiles].next = NULL;
//vorherigen next Zeiger auf aktuelles Element setzen
if (anzFiles > 0)
fileListe[anzFiles - 1].next = &fileListe[anzFiles];
anzFiles++;
element.close();
}
}
}
Beim compilieren erhalte ich die Fehlermeldung "incompatible Typen "char*" to "char[14]" bei fileListe[anzFiles].soundFile = element.name();
Dass der Compiler meckert, ist mir klar. In meinem struct habe ich "soundFile" als Char[14] definiert. "element.name" ist ein char*. Nachdem was ich bislang begriffen habe, sind beides eigentlich char-arrays. Bei dem dem char "soundfile" ist jedoch die Länge mit 14 definiert.
Mir gelingt es nicht, die beiden "kompatibel" zu machen.
Ich habe auch "element.name" in eine string-Variable eingelesen und dann versucht mit .toCharArray diese umzuwandeln. Klappt auch nicht.
Irgendwas habe ich mal wieder nicht begriffen Könnt Ihr mir wieder mal auf die Sprünge helfen?