Problem z odczytem danych z pliku i eVC 4.0

  • 4 Odpowiedzi
  • 1232 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

Problem z odczytem danych z pliku i eVC 4.0
« dnia: Maj 29, 2006, 13:42:15 »
Witam.

Mam dosyć spory problem z odczytem danych z pliku jeśli chodzi o eVC 4.0.
 
Napisałem pewną niewielką aplikację która wykonuje obliczenia na podstawie danych wprowadzanych z plików (czeterech) w Dev-Cpp 4.9.9.2 i program mi działa. Chcę teraz użyć kodu tego programu jako pewien "moduł" prowadzący obliczenia w mojej aplikacji na PPC. EVC kompiluje kod ale niestety nie działa mi to jak należy. Sprawdziłem że program wiesza się jak ma wczytywać dane z pliku. Dodam że używałem do wczytywania danych z plików tablic struktur - później było łatwo odwoływać mi sie do poszczególnych komórek pamieci z danymi.

podam część mojego kodu

 
struct liczbyLovea
    {
         double G0;
         double GP;
         double GM;
         double h0;
         double hP;
         double hM;
         double k0;
         double kP;
         double kM;
         double l0;
         double lP;
         double lM;
         double szerP;
         double szerM;
    } tablicaDanych[12];
    int i, iZwrot;
    FILE *plik;
    //--------------------------------------------------------------------------
    plik = fopen("liczbyLovea.txt","r");
    while(!feof(plik))
    {
         for(i = 0; i < 12; i++)
         {
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].G0);
              if (iZwrot == EOF)
              {
                   break;
              }
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].GP);
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].GM);
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].h0);
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].hP);
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].hM);
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].k0);
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].kP);
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].kM);
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].l0);
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].lP);
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].lM);
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].szerP);
              iZwrot = fscanf(plik,"%lf",&tablicaDanych[i].szerM);
         }    
    }
    fclose(plik);


A plik wygląda tak:

1.1576 -0.0016 0.0054 0.6165 0.0007 0.0018 0.3068 0.0015 -0.0004 0.0840 -0.0020 0.0000 0.0000 0.0000
1.1542 -0.0018 0.0000 0.6069 0.0007 0.0000 0.3009 0.0014 0.0000 0.0841 -0.0020 0.0000 0.0000 0.0000
1.1600 -0.0010 0.0000 0.6133 0.0005 0.0000 0.3034 0.0009 0.0000 0.0852 -0.001 0.0000 0.0000 0.0000
1.0728 0.0000 0.0000 0.2946 0.0000 0.0000 0.0942 0.0000 0.0000 0.0149 0.0000 0.0000 0.0000 0.0000
1.0728 0.0000 0.0000 0.2946 0.0000 0.0000 0.0942 0.0000 0.0000 0.0149 0.0000 0.0000 0.0000 0.0000
1.0728 0.0000 0.0000 0.2946 0.0000 0.0000 0.0942 0.0000 0.0000 0.0149 0.0000 0.0000 0.0000 0.0000
1.0728 -0.0010 0.0000 0.2946 0.0003 0.0000 0.0942 0.0007 0.0000 0.0149 0.0000 0.0000 0.0000 0.0000
1.0363 0.0000 0.0000 0.1807 0.0000 0.0000 0.0427 0.0000 0.0000 0.0100 0.0000 0.0000 0.0000 0.0000
1.0363 0.0000 0.0000 0.1807 0.0000 0.0000 0.0427 0.0000 0.0000 0.0100 0.0000 0.0000 0.0000 0.0000
1.0363 0.0000 0.0000 0.1807 0.0000 0.0000 0.0427 0.0000 0.0000 0.0100 0.0000 0.0000 0.0000 0.0000
1.0363 0.0000 0.0000 0.1807 0.0000 0.0000 0.0427 0.0000 0.0000 0.0100 0.0000 0.0000 0.0000 0.0000
1.0363 -0.000315 0.0000 0.1807 0.00015 0.0000 0.0427 0.00066 0.0000 0.0100 0.0000 0.0000 0.0000 0.0000



Dane pooddzielane są w pliku tabulatorami.

Może ktoś cos poradzi.

Pozdrawiam.

Problem z odczytem danych z pliku i eVC 4.0
« Odpowiedź #1 dnia: Maj 30, 2006, 15:29:56 »
Kolega fp na priv odpowiedział mi że może być problem z otwieraniem pliku. Napisał mi że powinno być:

plik = fopen("\\JakisKatalog\\liczbyLovea.txt","rt");

a nie

plik = fopen("liczbyLovea.txt","r");


Dodam że jak wciska sie przycisk w eVC 4.0 Execute (brązowy wykrzyknik) to program ląduje w My Device (jeśli się nic nie pozmienia w ustawieniach eVC - jesli się nie myle). Tam też dzieki mapowaniu folderu jako karty pamieci przekopiowałem pliki textowe. <-- Z tym mapowaniem to tyczy się emulatora. Stąd wynika że program i pliki textowe sa w "jednym katalodu". Pliki textowe tworzyłem na kompie - są w kodowaniu ASCII. Może tu siedzi cały szkopuł bo jeśli się nie myle to natywnym kodowaniem dla PPC jest UNICODE.

Może problem siedzi gdzie indziej. Może ktoś wypowie się na ten temat a nie będzie sie tyko przyglądał.

Pozdrawiam.

Problem z odczytem danych z pliku i eVC 4.0
« Odpowiedź #2 dnia: Lipiec 09, 2006, 13:46:59 »

TCHAR   sciezka[256]; // sciezka do naszego exe
char    pelna_sciezka[256]; // sciezka do naszego pliku

GetModuleFileName(NULL, sciezka, 256);

TCHAR *pos = wcsrchr(sciezka, '\\');
*(pos + 1) = '\0';

wcstombs(pelna_sciezka, sciezka, 256);

strcat(pelna_sciezka, "liczbyLovea.txt");

file = fopen(pelna_sciezka,"rt");


Problem z windows mobile polega na tym ze windows nie utrzymuje informacji o aktualnej pozycji drzewa katalogow w ktorym sie znajdujemy...

Wiec "GetModuleFileName(NULL, sciezka, 256);" daje nam pelna sciezke do anszego pliku exe programu, ucinamy ten lancuch o nazwe pliku exe, wstawiamy nazwe pliku ktory chcemy otworzyc i otwieramy go :)

*

Offline MacBirdie

  • *****
  • 1943
  • Płeć: Mężczyzna
  • I znów Poznań ;)
    • macbirdie.net
  • Sprzęt: iPhone 4 16GB | iPad 3G 64GB | iPhone 3G 8GB
Problem z odczytem danych z pliku i eVC 4.0
« Odpowiedź #3 dnia: Lipiec 10, 2006, 10:39:07 »
A ja bym w ogóle radził robić kontrolę błędów otwierania plików - potem nie ma problemów typu dlaczego się dziwnie zawiesza. ;)

Problem z odczytem danych z pliku i eVC 4.0
« Odpowiedź #4 dnia: Lipiec 10, 2006, 15:44:26 »
hehe no fakt :) Ja podalem "sposob" jak otwierac :) Moj kod nie byl podany tak zeby go do razu wprowadzac do jakiegos projektu :P

Ten kod musi 100% dzialac :) No chyba ze plik nazywa sie inaczej :P