Problem z odczytem danych z pliku tekstowego

  • 4 Odpowiedzi
  • 1142 Wyświetleń

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

Problem z odczytem danych z pliku tekstowego
« dnia: 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

*

Offline jadsadah

  • **
  • 127
  • Sprzęt: Eten X800, HTC HD
Problem z odczytem danych z pliku tekstowego
« Odpowiedź #1 dnia: 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)
:)

Problem z odczytem danych z pliku tekstowego
« Odpowiedź #2 dnia: 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

*

Offline jadsadah

  • **
  • 127
  • Sprzęt: Eten X800, HTC HD
Problem z odczytem danych z pliku tekstowego
« Odpowiedź #3 dnia: 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 :>

*

Offline Heban

  • 35
  • Płeć: Mężczyzna
  • Htc Touch HD
Problem z odczytem danych z pliku tekstowego
« Odpowiedź #4 dnia: 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.