CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Plik pomoc

Plik pomoc

dział ogólny

Plik pomoc

Nowy postprzez Frytek18 » piątek, 25 maja 2012, 13:24

Jak mam plik pomoc.html i chce go otworzył klikajac na przycisk pomoc ?Jak mam to zrobic? ShellExecute(Handle, "open", "pomoc.html", NULL, NULL, SW_SHOWNORMAL); nie działa
Avatar użytkownika
Frytek18
Homos antropiczny
Homos antropiczny
 
Posty: 60
Dołączył(a): czwartek, 17 maja 2012, 19:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WIN XP 32 bit
Kompilator: Embarcadero RAD Studio 2010 C++
Gadu Gadu: 5032466
    Windows XPFirefox

Re: Plik pomoc

Nowy postprzez Cyfrowy Baron » piątek, 25 maja 2012, 17:18

Działa, dział!! Tylko musisz podać bezwzględną ścieżkę dostępu do pliku, np:

KOD cpp:     UKRYJ  
ShellExecute(Handle, "open", "c:\\pomoc.html", NULL, NULL, SW_SHOWNORMAL);


a jeżeli plik znajduje się w katalogu programu to podajesz ścieżkę bezwzględną, ale względem programu:

KOD cpp:     UKRYJ  
 String helpFile = ExtractFilePath(Application->ExeName) + "pomoc.html";
 ShellExecute(Handle, L"open", helpFile.c_str(), NULL, NULL, SW_SHOWNORMAL);


Ścieżki względne mają, czyli w Twoim przypadku sama nazwa pliku, który znajduje się w katalogu programu, mają to do siebie, że program może je łatwo zgubić, dlatego zawsze należy podawać ścieżki bezwzględne tak jak to podałem wyżej.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Plik pomoc

Nowy postprzez Frytek18 » sobota, 26 maja 2012, 10:10

Wywala bład [BCC32 Error] Unit1.cpp(822): E2034 Cannot convert 'const wchar_t *' to 'const char *'
Full parser context
Unit1.cpp(820): parsing: void _fastcall TForm1::AboutClick(TObject *)
Avatar użytkownika
Frytek18
Homos antropiczny
Homos antropiczny
 
Posty: 60
Dołączył(a): czwartek, 17 maja 2012, 19:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WIN XP 32 bit
Kompilator: Embarcadero RAD Studio 2010 C++
Gadu Gadu: 5032466
    Windows XPFirefox

Re: Plik pomoc

Nowy postprzez Cyfrowy Baron » sobota, 26 maja 2012, 10:52

Ustaw sobie w opcjach projektu mapowanie na wchar_t opisałem to w tym poście http://programowanie.cal.pl/forum/viewtopic.php?f=16&t=1098#p7401, lub stosuj prostą wszak zasadę: jeżeli funkcja oczekuje zmiennej typu char to używasz do konwersji zmiennej typu UnicodeString na char metody t_str() dla zmiennej i nie stawiasz L przed łańcuchem znaków. Jeżeli natomiast funkcja oczekuje zmiennej typu wchar_t, to do konwersji zmiennej UnicodeString na whar_t używasz metody c_str() lub t_str() dla zmiennej i stawiasz L przed łańcuchem znaków.

Przykłady dla środowiska C++Builder 2010:

mapowanie ustawione na char:
KOD cpp:     UKRYJ  
 String helpFile = ExtractFilePath(Application->ExeName) + "pomoc.html";
 ShellExecute( Handle, "open", helpFile.t_str(), NULL, NULL, SW_SHOWNORMAL);


mapowanie ustawione na wchar_t:
KOD cpp:     UKRYJ  
 String helpFile = ExtractFilePath(Application->ExeName) + "pomoc.html";
 ShellExecute( Handle, L"open", helpFile.c_str(), NULL, NULL, SW_SHOWNORMAL);


Przykłady dla środowiska C++Builder XE2:

mapowanie ustawione na char:
KOD cpp:     UKRYJ  
 String helpFile = ExtractFilePath(Application->ExeName) + "pomoc.html";
 ShellExecute( Handle, "open", AnsiString(helpFile).c_str(), NULL, NULL, SW_SHOWNORMAL);


mapowanie ustawione na wchar_t:
KOD cpp:     UKRYJ  
 String helpFile = ExtractFilePath(Application->ExeName) + "pomoc.html";
 ShellExecute( Handle, L"open", helpFile.c_str(), NULL, NULL, SW_SHOWNORMAL);
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Plik pomoc

Nowy postprzez Frytek18 » sobota, 26 maja 2012, 11:39

hmm... dziwne mimo to jak nawet wskaże ścieżkę do pliku nic sie nie dzieje
Avatar użytkownika
Frytek18
Homos antropiczny
Homos antropiczny
 
Posty: 60
Dołączył(a): czwartek, 17 maja 2012, 19:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WIN XP 32 bit
Kompilator: Embarcadero RAD Studio 2010 C++
Gadu Gadu: 5032466
    Windows XPFirefox

Re: Plik pomoc

Nowy postprzez Cyfrowy Baron » sobota, 26 maja 2012, 13:37

W załączniku masz program który używa tej funkcji i otwiera plik HTML w domyślnej przeglądarce. Sprawdź czy to u Ciebie działa, bo u mnie - jak najbardziej.

Przerób kod w ten sposób, żeby sprawdzić czy prawidłowo podajesz ścieżkę dostępu do poliku:

KOD cpp:     UKRYJ  
 String helpFile = ExtractFilePath(Application->ExeName) + "pomoc.html";

  if( FileExists( helpFile ) ) ShowMessage("Znaleziono plik");
  else
  {
    ShowMessage("Nie odnaleziono pliku: " + helpFile);
    return;
  }
 
 ShellExecute( Handle, L"open", helpFile.c_str(), NULL, NULL, SW_SHOWNORMAL);
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Plik pomoc

Nowy postprzez Frytek18 » niedziela, 27 maja 2012, 09:54

Działą trzeba było po prostu zrobić jak mówiłeś wcześniej mapowanie na char C++Builder XE2
Avatar użytkownika
Frytek18
Homos antropiczny
Homos antropiczny
 
Posty: 60
Dołączył(a): czwartek, 17 maja 2012, 19:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WIN XP 32 bit
Kompilator: Embarcadero RAD Studio 2010 C++
Gadu Gadu: 5032466
    Windows XPFirefox

Re: Plik pomoc

Nowy postprzez Cyfrowy Baron » niedziela, 27 maja 2012, 10:41

Bzdury wypisujesz i wprowadzasz innych, którzy to przeczytają w błąd. Kod działa niezależnie od mapowania, gdyż sprawdziłem do w XE2. Wszystko co musisz zmienić w zależności od mapowania, to sposób konwersji zmiennej UnicodeString na wchar_t przy mapowaniu na wchar_t lub na char przy mapowaniu na char.

Jeżeli miałeś ustawione mapowania na wchar_t to kod powinien wyglądać tak:

KOD cpp:     UKRYJ  
String helpFile = ExtractFilePath(Application->ExeName) + "pomoc.html";
ShellExecute( Handle, L"open", helpFile.c_str(), NULL, NULL, SW_SHOWNORMAL);


Jeżeli natomiast mapowanie masz ustawione na char to kod powinien wyglądać tak:

KOD cpp:     UKRYJ  
String helpFile = ExtractFilePath(Application->ExeName) + "pomoc.html";
ShellExecute( Handle, "open", AnsiString( helpFile ).c_str(), NULL, NULL, SW_SHOWNORMAL);


I to wszystko, tyle się o tym rozpisywałem, a Ty nie zrozumiałeś.

Przykładowy program, który zamieściłem w swoim poprzednim poście ma mapowanie ustawione na wchar_t, a mimo to działa, prawda?!
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Plik pomoc

Nowy postprzez Frytek18 » niedziela, 27 maja 2012, 12:31

Działa jak mówisz
Avatar użytkownika
Frytek18
Homos antropiczny
Homos antropiczny
 
Posty: 60
Dołączył(a): czwartek, 17 maja 2012, 19:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WIN XP 32 bit
Kompilator: Embarcadero RAD Studio 2010 C++
Gadu Gadu: 5032466
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 6 gości