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
-
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
-
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)
:)
-
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
-
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 :>
-
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.