PDAclub.pl - Forum użytkowników technologii mobilnych

Windows Mobile (Classic, Professional, Standard), Windows Phone 6.x oraz 7/8.x/10 => Oprogramowanie PPC => Dla programistów => Wątek zaczęty przez: kielnia w Marzec 10, 2006, 15:17:13

Tytuł: Problem z odczytem danych z pliku tekstowego
Wiadomość wysłana przez: kielnia w Marzec 10, 2006, 15:17:13
Witam

Mam problem z odczytem danych z pliku tekstowego. Napisałem sobie prosty programik do pracy na plikach tekstowych na podstawie znanego kursu do visual c++. Programik mi zapisuje dane do pliku i dopisuje ale niestety nie potrafi odczytać później tego. Pojawiaja mi się kwadraciki same. Część kodu:

void CPlikitekstoweDlg::OnZapisz()
{
// TODO: Add your control notification handler code here

FILE *plik;
UpdateData(TRUE);
plik = fopen("test.txt","w");
fputws(/*(LPCTSTR)*/m_tekst, plik);
fclose(plik);

}

void CPlikitekstoweDlg::OnOdczytaj()
{
// TODO: Add your control notification handler code here

FILE *plik;
char linia[100];
CString wynik;

if ((plik = fopen("test.txt","r")) != NULL)    // Sprawdzamy czy plik istnieje
{
while(fgets(linia,100,plik) != NULL)        // Dopóki plik nie skończy się pobierz linię
{
wynik.Format(TEXT("%s"),linia);                // Formatujemy
MessageBox(wynik);                  // Wyświetlamy wynik
}
fclose(plik);            // Zamykamy plik
}
else                // A jeśli plik nie istnieje...
{
MessageBox(TEXT("Plik nie istnieje !!!"),TEXT("Błąd"),MB_ICONERROR);
}

}

void CPlikitekstoweDlg::OnDopisz()
{
// TODO: Add your control notification handler code here

FILE *plik;
UpdateData(TRUE);
plik = fopen("test.txt","a");
fputws(/*(LPCTSTR)*/m_tekst + "\n", plik);
fclose (plik);

}


Zazmaczam że piszę w eVC++ 4.0.

Mam jeszcze drugie pytanie. Jak można zaemulować w emulatorze ppc z wm 2003 kartę pamięci. Wiem że cos takiego można zrobić bo czytałem to na tym forum jednak teraz niestety nie moge tego znaleźć.

Pozdrawiam
Tytuł: Problem z odczytem danych z pliku tekstowego
Wiadomość wysłana przez: jadsadah w Marzec 10, 2006, 17:14:27
Zauwaz ze do zapisu uzywasz funkcji fputws
to _w_ przed s(skrot od string) oznacza ze zapisujesz dane w postaci typu wchar_t (dwa bajty na kazdy znak - unicode).

Natomiast odczytujesz je jako standardowe znaki char (jeden bajt- jeden znak), dlatego czyta smieci.

Albo zapisuj w "char" i czytaj w "char" (fputs/fgets) albo trzymaj sie konwencji zapisu/odczytu unicode, wtedy zamien fgets na fgetws, zas deklaracje tablicy (bufora) na wchar_t zamiast char:

  char linia[100]; --> wchar_t linia[100];

i

while(fgetws(linia,100,plik) != NULL)
:)
Tytuł: Problem z odczytem danych z pliku tekstowego
Wiadomość wysłana przez: kielnia w Marzec 10, 2006, 18:15:59
Dzięki bardzo jadsadah, dziala   :D .

Mam jeszcze prośbę do Ciebie i do reszty jeszcze o odpowiedź na drugie pytanie które zamieszczone jest w poście pierwszym - To tyczące się wirtualnej karty pamieci w emulatorze palmtopa.

Pozdrawiam
Tytuł: Problem z odczytem danych z pliku tekstowego
Wiadomość wysłana przez: jadsadah w Marzec 10, 2006, 18:32:27
W sumie nigdy tego nie uzywalem, ale sam bylem ciekaw :

(...)
With the 2003 emulator you can also map a folder on your hard drive to be the storage card in the emulator. This is another way of conveniently making files available to your app. Just open the Emulator > Folder Sharing menu item.

groups.google :>
Tytuł: Problem z odczytem danych z pliku tekstowego
Wiadomość wysłana przez: Heban w Marzec 12, 2006, 02:32:19
Uruchom Microsoft Device Emulator przejdź do Folder\Configure\General i w polu Shared Folder wpisujesz ścieżkę do twojego katalogu na PC który będzie widoczny dla emulatora jako Storage Card.