Autor Wątek: Ścieżka pliku = const char *?  (Przeczytany 1368 razy)

Offline raver

  • Użytkownik
    • Moja strona domowa.

# Lipiec 01, 2010, 18:39:26
Hej, piszę sobie framework pod Windowsa i na pewien problem natrafiłem. Chodzi mi o wczytywanie plików, a dokładnie o ich ścieżki - zauważyłem, że bardzo dużo bibliotek używa const char* zamiast const wchar_t* i dlatego niektórych plików nie da się wczytać. Co z tym fantem zrobić? "Znalazłem" 3 sposoby:

1. Na głupka - konwertuję ciąg wchar_t* do char* na "pałę" i liczę że się uda. Rozwiązanie fajne do czasu, gdy ktoś próbuje wczytać teksturę z folderu /zażółć gęślą jaźń/.

2. Konwersja do aktualnego kodowania obowiązującego w systemie - prosta konwersja jak z art [1]. Problem pojawia się gdy na np. niemieckim windowsie otwieramy folder /żółć/, albo na polskim jakieś chińskie znaczki.

3. Przepisać sobie wszystkie używane biblioteki na unicode - ale do tego trzeba bardzo dużo czasu... i będzie to czas zmarnowany. A i czasami biblioteki nie mają otwartych źródeł.

Macie jakieś pomysły jak sobie z tym lepiej poradzić? Mi osobiście wygląda fajnie rozwiązanie nr. 2 i rzucanie w usera błędem o niepowodzeniu konwersji.

[1] - http://www.warsztat.gd/articles.php?x=view&id=270

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Dab

  • Redaktor
    • blog

# Lipiec 01, 2010, 18:46:20
Cytuj
1. Na głupka - konwertuję ciąg wchar_t* do char* na "pałę" i liczę że się uda. Rozwiązanie fajne do czasu, gdy ktoś próbuje wczytać teksturę z folderu /zażółć gęślą jaźń/.

Bardzo kiepski pomysł -- rzutujesz znaki dwubajtowe na jednobajtowe.

A rozwiązanie problemu jest bardzo proste -- po prostu nie używać plików z polskimi (czy jakimikolwiek dziwnymi) nazwami :)

Offline Liosan

  • Redaktor

# Lipiec 01, 2010, 18:49:25
Jedna z moich instalacji windowsa ma nazwę użytkownika "Właściciel"... wiesz, ile gier tam nie działa, bo próbuje zapisywać save'y i ustawienia w moich dokumentach? ;)

Liosan

Offline Kos

  • Użytkownik
    • kos.gd

# Lipiec 01, 2010, 20:00:46
A rozwiązanie problemu jest bardzo proste

s/rozwiązanie/unikanie/ :)

Offline dynax

  • Użytkownik

# Lipiec 01, 2010, 20:14:02
Jedna z moich instalacji windowsa ma nazwę użytkownika "Właściciel"... wiesz, ile gier tam nie działa, bo próbuje zapisywać save'y i ustawienia w moich dokumentach? ;)

Liosan

No, moje konto administracyjne nazywa się "Michał", wiem coś o tym ;)
A w projektach zawsze używam nazw angielskich, i nigdy nie miałem problemu z kodowaniem.

# Lipiec 01, 2010, 21:01:35
Jeśli nie macie Rosyjskiej klawiatury, to moglibyście zerknąć w swoich systemach czy poprawnie wam się wyświetla nazwa tego pliku.
I czy ta nazwa wygląda tak jak na obrazku poniżej.

Bo przez wasze komantarze mam pewne obawy...

Offline Avaj

  • Użytkownik

# Lipiec 01, 2010, 21:08:50
u mnie się wyświetla poprawnie,, mam angielskiego w7 x64

# Lipiec 01, 2010, 21:11:08
u mnie się wyświetla poprawnie,, mam angielskiego w7 x64
Ok, dzięki.
W takim razie wasze wcześniejsze komentarze są błędne.(lub częściowo błędne)

Down:
Ja mam też XP polski i tam mi się wyświetla.
Ale w sumie mam zainstalowany Rosyjski język.
« Ostatnia zmiana: Lipiec 01, 2010, 21:23:38 wysłana przez Wladekprogramista »

Offline Liosan

  • Redaktor

# Lipiec 01, 2010, 21:11:45
U mnie wyświetla się błędnie - polski XP HE.

Liosan

Offline rm-f

  • Użytkownik
    • Tu trolluje

# Lipiec 01, 2010, 21:18:51
Piczki.
Zwis X86

# Lipiec 01, 2010, 21:51:39
Edit : Na viscie 64 bit nie działa, więc dalsze testy nie mają sensu
Na XP u mnie działa

No dobra, to chociaż < to > wam się wyświetla ?

Bo tak powinno być:


Dodane
Ten plik exe powinien być rozpakowany, ponieważ tworzy plik .

« Ostatnia zmiana: Lipiec 01, 2010, 23:43:40 wysłana przez Wladekprogramista »

Offline Dab

  • Redaktor
    • blog

# Lipiec 01, 2010, 21:56:17
Nie uruchamiać, smerfware!

Offline MaxGarden

  • Użytkownik
    • Profil na warsztacie

# Lipiec 01, 2010, 23:39:06
Cytuj
Program winda.exe przestał działać

Nic nie wyświetla , Vista 64 -_-