Wie kann ich meinen Code vereinfachen?

Einen Schritt weiter, aaber....

Jetzt kommt das Problem mit der SD-Karte zum tragen.

Leider initialisiert sich der SD-Kartenleser nicht mehr korrekt.

Im seriellen Monitor erscheint nur noch:

Starting SD..

Die Funktion habe ich nun so programiert und es erscheint auch keine Fehlermeldung.

Ein Auszug:

void setup(){

Serial.begin(9600);

pinMode(10,OUTPUT); // disable w5100 while setting up SD
digitalWrite(10,HIGH);
Serial.print("Starting SD..");
if(!SD.begin(4)) Serial.println("failed");
else Serial.println("ok");

Ethernet.begin(mac, ip, gateway, subnet);
digitalWrite(10,HIGH);
delay(2);
server.begin();
Serial.println("Ready");

}

EthernetClient client;

void loop(){

// ------------------------------------------------------------------------- Create a client connection
client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();

if (readString.length() < 100) { //read char by char HTTP request
readString += c; //store characters to string
}
if (c == '\n') { //if HTTP request has ended
LetzteZeitAus = millis();
Serial.println(readString); //print to serial monitor for debuging

if(readString.indexOf("Joker=Joker+einl") > -1) { // ----- Joker einlösen
if(readString.indexOf("Code=36811") > -1) { //// --- Code Frage 2
Serial.println("Code Frage 2 erkannt");
Fragencounter = 2;
printMyFile("0102fr.txt");
}....................

.............client.stop();
}
}
}
}
}

// ------------------------------------------------------------------------- Client ausgeben

void printMyFile(char* filename) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
File myFile = SD.open(filename);
if (myFile) {
while (myFile.available()) {
client.write(myFile.read());
}
myFile.close();
}
delay(1);
}

So sieht es jetzt aus. Wo könnte noch ein Fehler liegen?

Grüße
Sven