Programm wird ohne Fehlermeldung einfach beendet

WebRabbit

Mitglied
Hallo Leute, ich habe ein kleines (für mich unlösbares ) Problem.
Ich habe Programm zum verwalten von Adressen geschrieben.
Leider stürzt das Programm immer ab, nachdem man das 2. oder 3. mal eine suche gestartet hat.

Das Programm selbst sieht so aus:
Code:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include "rf_function.h"

/*
Ä = \x8e
ä = \x84
Ö = \x99
ö = \x94
Ü = \x9a
ü = \x81
ß = \xe1
*/

int file_exists(char *); // prototype of function "file_exists"
long filesize(FILE *);   // prototype of function "filesize"
int count(int arr[]);    // prototype of function "count"
void initialise(int* intvar, int size); // prototype of function "initialise"

int main(void){
    system("color 3f");
    char choice, another  = '\0';
    int found[101];
    initialise(found, 100);
    int a, k, z, arraylen = 0, x = 0 , size = 0 ,  pos = 1, i = 0, fileend = 0, b, e =0;
    struct address{
           char forename[25];
           char name[25];
           char street[35];
           char strno[4];
           char zipcode[10];
           char city[30];
    };
    struct address person[1000];
    FILE * addresses; // Set File
    fileend = filesize(addresses);
    char*  data; // reserve size for filedata
    data = (char *) malloc(fileend);
    char search[40];
    char* String;
    int f = 0, element = 0;

    
    i = 0;
    system("cls");
    //start program output
    printf("\n\n\n");
    printf("\t###############################################\n");
    printf("\t#   Programm Adresskartei    #\n");
    printf("\t###############################################\n\n"); 
    printf("\tBitte w\x84hlen Sie eine Option: \n\n");
   
    if(file_exists("adressen.txt")){
      printf("\t1. Neue Kartei anlegen\n");
      printf("\t2. Alle Karteien anzeigen\n");
      printf("\t3. Kartei Suchen\n");
      printf("\t4. Kartei l\x94schen\n");
      printf("\t5. Programm beenden\n\n");
      }//END if(file_exists("adressen.txt"))
      else{
           addresses = fopen("adressen.txt", "w");
           fclose(addresses);
           printf("1. Neue Kartei anlegen\n");
           }//END else(file_exists("adressen.txt"))
    
    do{// repeat the menu selection until right choice
      choice = getch();
      if(i >= 1 ){
        printf("Bitte geben Sie eine Zahl zwischen 1 und 4 ein.\n");
        }//END if(i >= 1)
      i++;
      }//END do
      while(choice < 49 || choice > 53);
      switch(choice){ //main
              case 49: 
                    printf("\tNeue Kartei anlegen\n");
                    printf("\tName:"); scanf("%s", &person[0].name);
                    printf("\tVorname:"); scanf("%s", &person[0].forename);
                    printf("\tStrasse:"); scanf("%s", &person[0].street);
                    printf("\tHausnummer:"); scanf("%s", &person[0].strno);
                    printf("\tPLZ:"); scanf("%s", &person[0].zipcode);
                    printf("\tOrt:"); scanf("%s", &person[0].city);
                    
                    if(addresses != NULL){
                      addresses = fopen("adressen.txt", "a");
                      fseek(addresses, 0, SEEK_END); //set pointer to end of file
                      fprintf(addresses, "%s,",  person[0].forename);
                      fprintf(addresses, "%s,",  person[0].name);
                      fprintf(addresses, "%s",   person[0].street);
                      fprintf(addresses, " %s,", person[0].strno);
                      fprintf(addresses, "%s,",  person[0].zipcode);
                      fprintf(addresses, "%s\n", person[0].city);
                      printf("\n\tDie Adresse wurde erfolgreich eingetragen");
                      }
                    fclose(addresses);
                    printf("\nMoechten Sie eine weiter Option durchf\x81hren? j/n\n");
                    another = getch(); //read userinput -> abort program?
                    if(another == 74 || another == 106){
                      main();
                      }
                    break;
              case 50:
                    pos=1;
                    printf("\tAusgabe aller Karteien:\n\n");
                      addresses = fopen("adressen.txt", "r");
                      while(fscanf(addresses,"%i",0L) != EOF){
                           fgets(data,fileend,addresses);
                           printf("\t%i. %s",pos,data);
                           pos++;
                           }
                      printf("\n\n");
                      fclose(addresses);
                    printf("\n\tMoechten Sie eine weitere Option durchf\x81hren? j/n\n");
                    another = getch(); //read userinput -> abort program?
                    if(another == 74 || another == 106){
                      main();
                      }                    
                    break;
              case 51:
                    printf("\tBitte geben Sie einen Suchbegriff ein: \n\t(Vorname, Name, Strasse, PLZ oder Ort) \n\n\tSuchwort: ");
                    scanf("%s", &search); // get word to search
                    int found[101];
                    initialise(found, 100);
                    printf("\n");
                    addresses = fopen("adressen.txt", "r"); // open file
                    k = 0;
                    z = 1;
                    size = 0;
                    size = sizeof(data); // get size of data
                    String = (char *) malloc(size); // reserve
                    while(fgets(data,fileend,addresses) != NULL){
                          // add "A,\0" to string -> explode
                          String[0] = 'A';
                          String[1] = ',';
                          String[2] = '\0';
                          strcat(String,data);
                          char* pToken = strtok(String, ",");
                          if (pToken){
                              a = 1;
                              while ((pToken = strtok(NULL, ","))){
                                    if(strcmp(pToken, search) == 0){
                                       ++k;
                                       found[k] = z;
                                       }//if(strstr(pToken, search)!= NULL 
                                       switch(a){
                                            case 1:
                                                  strcpy(person[z].forename, pToken);
                                                  break;
                                            case 2:
                                                  strcpy(person[z].name, pToken);
                                                  break;
                                            case 3:
                                                  strcpy(person[z].street, pToken);
                                                  strcpy(person[z].strno, "000");
                                                  break;
                                            case 4:
                                                  strcpy(person[z].zipcode, pToken);
                                                  break;
                                            case 5:
                                                  strcpy(person[z].city, pToken);
                                                  break;
                                            default:
                                                    //nothing
                                                    ;
                                            }//switch(a)
                                      a++;
                                      }//END while ((pToken = strtok(NULL, ","))
                              }//END if (pToken)
                              z++;
                          }//END while(fgets(data,fileend,addresses) != NULL)
                          
                    //##### Print addresses of found values. #####

                    e = count(found);
                    if(e <= 0){
                       printf("\n\tKeine \x9abereinstimmung gefunden.");
                       }//END if(found == 0)
                       else{
                            //printf("Found :%i",count(found));
                            for(b = 1; b <= e; b++){
                               printf("\n\n\t%s ", person[found[b]].forename);
                               printf("%s\n", person[found[b]].name);
                               printf("\t%s\n", person[found[b]].street);
                               printf("\t%s ", person[found[b]].zipcode);
                               printf("%s", person[found[b]].city);
                               }//END for(z = 1; z <= k; z++)
                           }//END else(found == 0)
                    fclose(addresses);
                    printf("\n\n\t Moechten Sie eine weitere Option durchf\x81hren? j/n\n");
                    another = getch(); //read userinput -> abort program?
                    if(another == 74 || another == 106){
                      main();
                      }
                      else{                  
                           break;
                           }
              case 52:
                    printf("Kartei l\x94schen\n");
                    printf("\n\n\tMoechten Sie eine weitere Option durchf\x81hren? j/n\n");
                    another = getch(); //read userinput -> abort program?
                    if(another == 74 || another == 106){
                      main();
                      }                       
                    break;
              case 53:
                    //system("exit");
              default:
                     //geht nicht, wird durch die schleife abgefangen
                     ;
          }//END switch
return 0;
}//END main()

Die Funktionen wie folgt:
Code:
int file_exists(char *dateiname){
    FILE *datei_ptr;
    int result;
    datei_ptr = fopen(dateiname, "r");
    if(datei_ptr != NULL){
       result = -1;
       fclose(datei_ptr);
       }
       else{
            result = 0;
            }
   return result;
   }    

long filesize(FILE *addresses){
    int end = 0;
    if(file_exists("adressen.txt")){
        addresses = fopen("adressen.txt", "r");
        fseek(addresses, 0L, SEEK_END);
        end = ftell(addresses);
        rewind(addresses);
        //printf("%i",end);
        fclose(addresses);
        }    
    return end; 
    }

int count(int arr[]){
    int i = 0, elements = 0;
    for(i = 0; i <= 101; i++){
        if(arr[i] != 0){
          elements++;
          }
       }// for(i = 0; i <= 101; i++)
    return elements;
    }

void initialise (int *intvar, int size){
     int z ;
     for(z = 0; z <= size; z++){
         intvar[z] = 0;
        }
     }

und die Textdatei im Format:

Muster, Mustermann, musterstr. 1,12345,Musterort
Muster2,Mustermann2,musterstr. 2, 67890, Musterort2
usw.

Wäre wirklich sehr dankbar wenn jemand ne Idee hätte.
Rätsel da nun schon seit Tagen dran.

Achso ich benutze Dev-Cpp 4.9.9.2, falls das Relevant ist.


Dank und Gruß

Webrabbit
 
Es stürzt ohne Fehlermeldung ab? Nichtmal die Typische Windows-Meldung, dass das Programm aufgrund eines Fehlers nicht mehr ausgeführt werden könne?
Wenn doch, dann is es mit hoher Wahrscheinlichkeit ne Speicherüberschreitung. Vielleicht bei einem Array oder halt ein Pointer...Musst dir mal nen Debugger schnappen, damit kann man solche Fehler immer schnell finden

MfG Manuel
 
Hi.

Also bei mir stürzt das Programm schonmal beim Anlegen einer Kartei ab.

Fehler:

  1. du hast die Variable addresses nicht initialisiert
  2. du rufst fclose(addresses) auf obwohl die Datei gar nicht offen ist

Warum verwendest du denn dort "magische" Zahlen? Findest du es wirklich sinnvoll dir zu merken das das Zeichen '1' den ASCII Code 49 hat?

Du kannst doch einfach while (choice < '0' || choice > '5'); schreiben. Da sieht man dann auch gleich was damit bewirkt werden soll.

Außerdem gibt getch einen Integerwert zurück. Da solltest du erstmal prüfen, ab dieser nicht EOF ist.

Gruß
 
Hallo und vielen Dank für eure Antworten,
also das mit dem Debugger hat leider auch keine nützlichen Infos gebracht.
Mit dem Speicherzugriff hast Du sicherlich Recht, ich habe ein oder zweimal eine solche Fehlermeldung bekommen, konnte jedoch nicht nachvollziehen an welcher Stelle.

@deepthroat:
Die Variable addresses wird oben als FILE * deklariert, am Anfang des Programms. Die Zahleneingabe lieferte immer wieder falsche Ergebnisse, wenn ich nicht die vorgeschriebenen Zahlen zwischen 1 und 4 bzw. 5 gewählt habe. Seit ich auf ASCII-Zahlen umgestiegen bin, gibt es keine Fehler mehr.
Das mit dem getch() versteh ich nicht ganz. Also Integerrückgabe schon, aber da ich die variable another auch wieder als ASCII Zahl prüfe und ein Typecast stattfindet, sollte das doch kein Problem darstellen. Was genau meinst Du mit, auf EOF prüfen? EOF = End of File, oder? was aber hat die Datei damit zu tun?
Muss gestehen ich arbeite erst seit einem viertel Jahr mit C.. also sorry, möglicherweise auch ein Grundlegendes Verständnisproblem.

Vielleicht kann ich das Problem nochmal genauer Beschreiben:
Ich wähle mit der Taste 3 die Suche aus, Tippe ein Suchwort, erhalte das richtige Ergebnis. Dann wähle ich 'j' um eine weitere Operation auszuführen. Tippe wieder 3 für die Suche, gebe das Scuhwort ein, seh kurz die korrekte Ausgabe und das Programm bleibt hängen. Vermute es hat was mit dem struct oder dem pToken, was die Zeilen der Datei an Hand des Kommas wieder in einzelne Worte trennt.
Aber ich weder wieso, noch wie ich dort etwas anders machen könnte. Gibt es denn noch andere Wege diese Suche zu gestalten (eine die ich Verstehen würde ;) ).
Bin nicht abgeneigt das ganze auch anders neu zu Programmieren.

Aber soweit nochmal danke.

Mfg Webrabbit
 
@deepthroat:
Die Variable addresses wird oben als FILE * deklariert, am Anfang des Programms.
Ja, nur deklariert, aber nicht initialisiert. Du mußt schon etwas genauer lesen.
Die Zahleneingabe lieferte immer wieder falsche Ergebnisse, wenn ich nicht die vorgeschriebenen Zahlen zwischen 1 und 4 bzw. 5 gewählt habe. Seit ich auf ASCII-Zahlen umgestiegen bin, gibt es keine Fehler mehr.
Dann hast du irgendetwas anderes falsch gemacht. Evlt. hast du einfach Integerliterale und nicht Zeichenliterale verwendet.
Das mit dem getch() versteh ich nicht ganz. Also Integerrückgabe schon, aber da ich die variable another auch wieder als ASCII Zahl prüfe und ein Typecast stattfindet, sollte das doch kein Problem darstellen. Was genau meinst Du mit, auf EOF prüfen? EOF = End of File, oder? was aber hat die Datei damit zu tun?
Du mußt prüfen ob überhaupt etwas eingelesen wurde. Natürlich findet implizit eine Typumwandlung statt wenn du den Rückgabewert von getch an die Variable choice zuweist. Dabei geht dann aber die Information verloren ob nicht evtl. die Eingabe zueende war:
C:
int choice;
while ((choice = getch()) != EOF && (choice < '1' || choice > '5')) {
  puts("Bitte geben Sie eine Zahl zwischen 1 und 5 ein.");
}

switch (choice) {
  case EOF:
    return 0;

  case '1': ... break; 
}
Gruß
 
Okay also das mit dem getch hab ich verstanden. *Danke*.
Aber was die Initialisierung angeht muss ich dann doch mal dumm Fragen.
Wie initialisiere ich denn ein struct?
Muss ich nur einen Wert in das erste Feld eintragen oder muss ich alle mit einem Wert vorbelegen - und wenn ja, wie geht das am besten?
 
Aber was die Initialisierung angeht muss ich dann doch mal dumm Fragen.
Wie initialisiere ich denn ein struct?
Wieso struct. Ich sprach von der Variablen addresses und das ist ein Zeiger. Der wird überlicherweise erstmal mit NULL initialisiert. Evtl. solltest du über die Benennung nachdenken, da sieht man nicht mehr durch. Und die Verwendung von Funktionen wäre sehr nützlich um die Komplexität zu reduzieren.

Da ist außerdem noch ein Fehler: du öffnest die Datei wenn addresses != NULL ist. Irgendwie unlogisch. Dann schließt du die Datei mit fclose - was aber nur möglich ist, wenn addresses nicht NULL ist.
C:
if ((addresses = fopen("adressen.txt", "a")) != NULL) {
  // neuen Eintrag vornehmen...

  fclose(addresses);
} else {
  perror("konnte datei nicht öffnen");
}
Gruß
 
So, ich habe das Programm nun nochmal umgebaut und versucht Übersichtlicher zu gestalten.
Es beendet sich nun auch nicht mehr von alleine beim Aufruf der Suche..
ABER er findet nur Einträge bei der Suche nach einem Namen oder Vornamen.
Bei der Suche nach einer Stadt z.B. kommen merkwürdige Zeichen heraus.

Versteh ich nicht so ganz, da die Suche bei Namen etc. immer gleich arbeitet.

Code:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include "rf_function.h"

/*
Ä = \x8e
ä = \x84
Ö = \x99
ö = \x94
Ü = \x9a
ü = \x81
ß = \xe1
*/

int file_exists(char *); // prototype of function "file_exists"
long filesize(FILE *);   // prototype of function "filesize"
int count(int arr[]);    // prototype of function "count"
void initialise(int* intvar, int size); // prototype of function "initialise"
void add_cards(void);    // prototype of function "add_cards"
void search_cards(void); // prototype of function "search_cards"
void show_cards(void);   // prototype of function "show_cards"

int main(void){
    system("color 3f");    
    char choice = '\0';
    char another = '\0';
    int found[101];
    initialise(found, 100); 
    int  arraylen = 0, x = 0 , size = 0 , i = 0, f = 0, element = 0;
    FILE * addresses; // Set File
    addresses = 0; //Initialise File
       
    system("cls");    
    //start program output
    printf("\n\n\n");
    printf("\t###############################################\n");
    printf("\t#   Programm Adresskartei                                                          #\n");
    printf("\t###############################################\n\n"); 
    printf("\tBitte w\x84hlen Sie eine Option: \n\n");
   
    if(file_exists("adressen.txt")){
      printf("\t1. Neue Kartei anlegen\n");
      printf("\t2. Alle Karteien anzeigen\n");
      printf("\t3. Kartei Suchen\n");
      printf("\t4. Programm beenden\n\n");
      }//END if(file_exists("adressen.txt"))
      else{
           addresses = fopen("adressen.txt", "w");     
           fclose(addresses);           
           printf("1. Neue Kartei anlegen\n");
           }//END else(file_exists("adressen.txt"))      
    
    do{
       // repeat the menu selection until right choice
       if(i >= 1 ){
         printf("Bitte geben Sie eine Zahl zwischen 1 und 4 ein.\n");
         }//END if(i >= 1)
       i++;
       }//END do
       while((choice = getch()) != EOF && (choice < 49 || choice > 52));
      
    //switch choice:
    switch(choice){ //main
          case EOF:
                return 0;      
          case 49: // case 1
                add_cards();
                printf("\n\tM""\x94""chten Sie eine weiter Option durchf\x81hren? j/n\n");
                another = getch();
                if(another == 47 || another == 106){
                   main();
                   }                                                   
                break;
          case 50: // case 2
                show_cards();
                printf("\n\tM""\x94""chten Sie eine weiter Option durchf\x81hren? j/n\n");
                another = getch();
                if(another == 47 || another == 106){
                   main();
                   }                                
                break;
          case 51: // case 3
                search_cards();
                printf("\n\tM""\x94""chten Sie eine weiter Option durchf\x81hren? j/n\n");
                another = getch();
                if(another == 47 || another  == 106){
                   main();
                   }                     
                break;
          case 52: // case 4
                exit;                         
          default:
                 //do while does not allow this
                 ;
         }//END switch
return 0;
}//END main()

Und hier die Funktionen:

Code:
int file_exists(char *dateiname){
    FILE *datei_ptr;
    int result;
    datei_ptr = fopen(dateiname, "r");
    if(datei_ptr != NULL){
       result = -1;
       fclose(datei_ptr);
       }
       else{
            result = 0;
            }
   return result;
   }    

/*
long filesize(FILE *addresses){
   long end = 0;
    if(file_exists("adressen.txt")){
        addresses = fopen("adressen.txt", "rb");
        fseek(addresses, 0L, SEEK_END);
        end = ftell(addresses);
        rewind(addresses);
        //printf("%i",end);
        fclose(addresses);
        }    
    return end; 
    }
*/
long filesize(FILE *addresses){
  long end = 0;
  int c,n;
  if(file_exists("adressen.txt")){
        addresses =  fopen("adressen.txt", "r");
        rewind(addresses);
          do{
             c = fgetc (addresses);
             n++;
            } while (c != EOF);
          fclose(addresses);
    }
    return n;
}

int count(int arr[]){
    int i = 0, elements = 0;
    for(i = 0; i <= 101; i++){
        if(arr[i] != 0){
          elements++;
          }
       }// for(i = 0; i <= 101; i++)
    return elements;
    }

void initialise (int *intvar, int size){
     int z ;
     for(z = 0; z <= size; z++){
         intvar[z] = 0;
        }
     }
     
void add_cards(){
     char forename[25];
     char name[25];
     char street[35];
     char strno[4];
     char zipcode[10];
     char city[30];         
     FILE * addresses; // Set File
     addresses = 0; //Initialise File 
        
     printf("\tNeue Kartei anlegen\n");
     printf("\tName:"); scanf("%s", &name);
     printf("\tVorname:"); scanf("%s", &forename);
     printf("\tStrasse:"); scanf("%s", &street);
     printf("\tHausnummer:"); scanf("%s", &strno);                
     printf("\tPLZ:"); scanf("%s", &zipcode);
     printf("\tOrt:"); scanf("%s", &city);
    
     addresses = fopen("adressen.txt", "a");
     fseek(addresses, 0, SEEK_END); //set pointer to end of file
     fprintf(addresses, "%s,", forename);
     fprintf(addresses, "%s,", name);
     fprintf(addresses, "%s",  street);
     fprintf(addresses, " %s,",strno);
     fprintf(addresses, "%s,", zipcode);
     fprintf(addresses, "%s\n",city);
   
     printf("\n\tDie Adresse wurde erfolgreich eingetragen\n");             
     fclose(addresses); 
     return;
     }//END void add_cards()                    
     
void show_cards(){
     FILE * addresses; // Set File
     addresses = 0; //Initialise File  
     int fileend = 0; //decl, ini fileend  
     int pos = 1;    
     fileend = filesize(addresses); //Get Size of File
     char*  data = 0; //declaration & initailisation of filedata
     data = (char *) malloc(fileend);  // reserve size for filedata         
     printf("\tAusgabe aller Karteien:\n\n");
     addresses = fopen("adressen.txt", "r");                                                    
     while(fscanf(addresses,"%i",0L) != EOF){                                       
           fgets(data,fileend,addresses);
           printf("\t%i. %s",pos,data);
           pos++;
           }
     printf("\n\n");
     fclose(addresses);                  
     return;         
}//END void show_cards()

void search_cards(){
    int a,b;
    int k = 0;
    int z = 1;
    int e = 0;
    struct address{
           char forename[25];
           char name[25];
           char street[35];
           char strno[4];
           char zipcode[10];
           char city[30];
    };
    struct address person[100]; //initialise struct person    
    FILE * addresses; // Set File
    addresses = 0; //Initialise File
    int fileend = 0; //decl, ini fileend    
    fileend = filesize(addresses); //Get Size of File
    char*  data = 0; //dec, ini  filedata
    data = (char *) malloc(fileend);  // reserve size for filedata
    char search[40]; // declaration of search -> searchword
    char* String;    
    String = '\0';  
    String = (char *) malloc(fileend); // reserve filesize    
    int found[101];
    initialise(found, 100);    
    
     printf("\tBitte geben Sie einen Suchbegriff ein: \n\t(Vorname, Name, Strasse, PLZ oder Ort) \n\n\tSuchwort: ");
     scanf("%s", &search); // get word to search
     printf("\n");                           
     addresses = fopen("adressen.txt", "r"); // open file            
     while(fgets(data,fileend,addresses) != 0 ){                                                                                                                            
          //add "A,\0" to string -> explode
          String[0] = 'A';
          String[1] = ','; 
          String[2] = '\0';    
          strcat(String,data);                                                                                  
          char* pToken = strtok(String, ",");                                                                          
          if (pToken){  
              a = 1;                                                                                                 
              while ((pToken = strtok(NULL, ","))){                  
                    if(strcmp(pToken, search) == 0){
                       ++k;
                       found[k] = z;                                                                                
                       }//if(strstr(pToken, search)!= NULL                                        
                       switch(a){
                            case 1:
                                  strcpy(person[z].forename, pToken);
                                  break;
                            case 2:
                                  strcpy(person[z].name, pToken);
                                  break; 
                            case 3:                                                  
                                  strcpy(person[z].street, pToken);
                                  break;                                                                                                                                                     
                            case 4:
                                  strcpy(person[z].zipcode, pToken);
                                  break;
                            case 5:
                                  strcpy(person[z].city, pToken);                                                      
                                  break;                                                  
                            default:
                                    //nothing
                                    ;                                                        
                            }//switch(a)                                                                                                                                                                                
                      a++;
                      }//END while ((pToken = strtok(NULL, ","))                                                                                                                                                                                                                             
              }//END if (pToken)                                                                          
              z++;                                                                   
          }//END while(fgets(data,fileend,addresses) != NULL)     
    e = count(found);
    if(e <= 0){
       printf("\n\tKeine \x9a""bereinstimmung gefunden.\n");
       }//END if(found == 0)
       else{                
            for(b = 1; b <= e; b++){
               printf("\n\n\t%s ", person[found[b]].forename);
               printf("%s\n", person[found[b]].name);
               printf("\t%s\n", person[found[b]].street);
               printf("\t%s ", person[found[b]].zipcode);
               printf("%s\n", person[found[b]].city);                                                                                   
               }//END for(z = 1; z <= k; z++)                                                                 
           }//END else(found == 0)                                                                                                           
    fclose(addresses); 
    return;                        
   }//END void search_cards()

Die Textdatei bleibt bei obigem Muster..


Vielleicht hat ja noch jemand ne Idee, woran es liegen könnte?

Dank und Gruß Webrabbit
 

Neue Beiträge

Zurück