Problem beim Laden von Daten mithilfe fopen/fread

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo


    Ich habe ein kleines System, welches aber nicht geht, das Pickup wird nicht erstellt und es wird auch nicht in die Serverlog :


    //Businesssystem für den Server
    new shopline[255],File:shopx = fopen("Business/BusinessInfo.txt", io_read), shop_index;
    new id;
    new BoughtShops;
    if(shopx)
    {
    while(fread(shopx,shopline))
    {
    strmid(ShopInfo[id][ShopName],strtok(shopline,shop_index,','),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    ShopInfo[id][ShopTyp] = strval(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopKonto] = strval(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopLager] = strval(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopX] = floatstr(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopY] = floatstr(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopZ] = floatstr(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopWert] = strval(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopErtrag] = strval(strtok(shopline,shop_index,','));
    strmid(ShopInfo[id][ShopBesitzer],strtok(shopline,shop_index,','),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    ShopInfo[id][ShopVerkauft] = strval(strtok(shopline,shop_index,','));
    ShopInfo[id][PickupNr] = CreatePickup(1273, 1, ShopInfo[id][ShopX], ShopInfo[id][ShopY], ShopInfo[id][ShopZ]);
    if(ShopInfo[id][ShopVerkauft] == 1)
    {
    BoughtShops++;
    }
    printf("Shop erstellt");
    id++;
    }
    fclose(shopx);
    }


    Weiss jemand, wora das liegen kann ? Der Shop Name kann auch zweiteilig sein, zB Mac Donald.
    MfG dUDALUS

  • Hallo


    Ich habe das ganze mal etwas mit printf durchgetestet und er kommt bis zu if(shopx) { (und läuft durch). Er steckt also vor der while Schleife. Mach ich einen grundlegenden Fehler oder wie ? Mit dem while öffnet er die Datei shopx (am Anfang zugewiesen) und schreibt das "Resultat" jeweils in den String shopline... Ich verstehs nicht mehr.


    MfG dUDA


    //Edit
    Ich habe das ganze Mal mit einer for Schleife versucht, er fängt nicht mal damit an. Es steht in der Serverlog immer nur "shop open"


    //Businesssystem für den Server
    new shopline[255],File:shopx = fopen("Business/BusinessInfo.txt", io_read), shop_index;
    // new id;
    new BoughtShops;
    if(shopx)
    {
    printf("shopx open");
    for(new id; id<ShopsAmount; id++)
    {
    printf("Shop anfang");
    fread(shopx, shopline);
    strmid(ShopInfo[id][ShopName],strtok(shopline,shop_index,','),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    ShopInfo[id][ShopTyp] = strval(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopKonto] = strval(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopLager] = strval(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopX] = floatstr(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopY] = floatstr(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopZ] = floatstr(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopWert] = strval(strtok(shopline,shop_index,','));
    ShopInfo[id][ShopErtrag] = strval(strtok(shopline,shop_index,','));
    strmid(ShopInfo[id][ShopBesitzer],strtok(shopline,shop_index,','),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    ShopInfo[id][ShopVerkauft] = strval(strtok(shopline,shop_index,','));
    ShopInfo[id][PickupNr] = CreatePickup(1273, 1, ShopInfo[id][ShopX], ShopInfo[id][ShopY], ShopInfo[id][ShopZ]);
    if(ShopInfo[id][ShopVerkauft] == 1)
    {
    BoughtShops++;
    }
    printf("Shop erstellt");
    // id++;
    }
    fclose(shopx);
    }