Witam
Otóż piszę sobie program pod WinApi, nic znowu nadzwyczajnego.
Krótki opis: chcę napisać program, który ma dwa duże pola tekstowe, po otwarciu pliku z surowymi danymi, który wygląda mniej więcej tak: raw_data.txt jego zawartość będzie wyświetlona w jednym z pól tekstowych. W drugim polu tekstowym zostaną wyświetlone już skonwertowane dane: TC_BaseArmor.txt
Problem polega na sposobie jak to zrobić najlepiej. Jako że program piszę pod WinApi, próbowałem korzystać z funkcji WinApi, a mianowicie GetOpenFileName(...) oraz ReadFile(...) Oczywiście wszystko działa pięknie ładnie, tekst ładnie się wyświetla w textboxie, jednak cała zawartość pliku jest przechowywana w ciągu znakowym LPSTR, a żeby to skonwertować, trzeba by się nie lada natrudzić, korzystając nawet z udogodnień biblioteki string.h oraz funkcji takich jak find_first_of itp.
Dużo łatwiej jest dokonać konwersji z użyciem starych poczciwych funkcji z C: fscanf. Jak widać w pliku z surowymi danymi, każda osobna wartość jest oddzielona tabulacją, dlatego odczytanie nawet 15 różnych danych z jednej linijki pliku to prosta sprawa. Przykładowo chcę odczytać 4 zmienne i zapisać w nowym pliku w nowej formie:
fscanf(fp_in, "%s %s %d %d", text1, text2, &a, &b); //odczyt
fprintf(fp_out, "imie %s\ntyp %s\nzycie %d\nmana %d", text1, text2, a, b); //zapis
Jak widać w tym przypadku nie jest to takie trudne i złożone, nawet gdy danych będzie więcej. (dane w pliku raw_data.txt to kilkanaście linijek o takiej samej strukturze).
Tylko problem polega na tym, jak pogodzić to z WinApi. Myślałem, aby plik otwierać z użyciem dialogboxa GetOpenFileName(...), a po wyłuskaniu z niego ścieżki do pliku, dalej pojechać jak w zwykłym C, czyli:
FILE *fp;
fp = fopen( szFileName, "r");
fscanf(...); //itd
Tylko tutaj pojawiają się kolejne problemy, ponieważ konwersja będzie się odbywała na poziomie plików (nic nie będzie wyświetlane w textboxie, to by było jak w programiku konsolowym), więc też trzeba by było znowu jakoś te skonwertowane dane wrzucić oprócz do pliku także do textboxa2. Tylko tutaj znowu zaczyna się inny problem, bo aby tekst był poprawnie wyświetlony w textboxie, nowa linia musi być opatrzona znakami \r\n. Gdy dane zapisuje do pliku, wystarczy tylko \n, gdy do pliku właduje \r\n mam o jednego 'entera' za dużo w pliku wyjściowym.
Mam nadzieję że nie zamotałem za bardzo, i w miarę da się zrozumiec o co mi chodzi :)
Z góry dziękuję za wszelką pomoc, pozdrawiam.