CYFROWY BARON • PROGRAMOWANIE • Zobacz wÄ…tek - Problem z ansistringami builder c++

Problem z ansistringami builder c++

dział ogólny

Problem z ansistringami builder c++

Nowy postprzez narelo » wtorek, 1 lutego 2011, 22:49

Witam, jestem nowy na forum i jest to tez moj pierwszy post.
Bawie sie w builderze c++ 6.0, wpadlem na pomysl by zrobic najprosciej jak sie da przegladarke internetowa, po 2 godzinnych bojach w google ponioslem kleske, dlatego tez zwracam sie o pomoc do Was.
Edit1: korzystam z tej wersji poniewaz takowej uzywamy tez w szkole

Program to kilka przycisków , okienko edit i komponent cppwebbrowser.

Tutaj zamieszczam kod:
Kod: Zaznacz cały
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "PRZEGLADARKAPROGRAMOWANIE.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SHDocVw_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Browser->Stop();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Browser->GoBack();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Browser->GoForward();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Browser->Refresh();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
Browser->GoHome();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Browser->Navigate(Edit1->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------


Przy kompilacji wystepuje blad:
Kod: Zaznacz cały
  [C++ Error] PRZEGLADARKAPROGRAMOWANIE.cpp(46): E2034 Cannot convert 'AnsiString' to 'wchar_t *'
  [C++ Error] PRZEGLADARKAPROGRAMOWANIE.cpp(46): E2342 Type mismatch in parameter 'URL' (wanted 'wchar_t *', got 'AnsiString')


Dla scislosci blad wyskakuje w tym miejscu:
Kod: Zaznacz cały
{
Browser->Navigate(Edit1->Text);
}


Uprzejmie prosze o pomoc :)

Edit2:
Znajomy poradzil abym zmodyfikowal tamte linijke w ten sposob:

Kod: Zaznacz cały
Browser->Navigate(WideString(Edit1->Text).c_bstr(), 0, NULL, NULL, NULL);


po czym pojawila sie kolejna fala bledow( to tylko czesc, wysypalo tego duzo duzo wiecej):
Kod: Zaznacz cały
Linker Error] Unresolved external '__fastcall Shdocvw_tlb::TCppSearchAssistantOC::BeforeDestruction()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PRZEGLADARKAPROGRAMOWANIE.OBJ
  [Linker Error] Unresolved external '__fastcall Shdocvw_tlb::TCppSearchAssistantOC::InitServerData()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PRZEGLADARKAPROGRAMOWANIE.OBJ
Avatar użytkownika
narelo
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): wtorek, 1 lutego 2011, 22:42
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP
Kompilator: builder c++
Gadu Gadu: 0
    Windows XPChrome

Re: Problem z ansistringami builder c++

Nowy postprzez Cyfrowy Baron » wtorek, 1 lutego 2011, 23:53

Dla scislosci blad wyskakuje w tym miejscu:


Powinno być:

KOD cpp:   •  UKRYJ  •
Browser->Navigate( WideString( Edit1->Text ).c_bstr(), 0, NULL, NULL, NULL);


Funkcja Navigate oczekuje typu wchar_t, a funkcja Text obiektu Edit zwraca typ AnsiString, dlatego trzeba dokonać konwersji z AnsiString na wchar_t.

Znajomy poradzil abym zmodyfikowal tamte linijke w ten sposob: [...] po czym pojawila sie kolejna fala bledow( to tylko czesc, wysypalo tego duzo duzo wiecej):


Znajomy dobrze Tobie doradził. Po czym pojawia się kolejna fala błędów, gdyż środowisko zatrzymuje się najpierw na błędach składni, a potem na błędach linkiera. Kolejnych błędów nie wywołuje konwersja z AnsiString na wchar_t, lecz po usunięciu błędu składni kompilator zgłasza kolejne błędy. Niestety to wina środowiska C++Builder 6 Personal. Spróbuj w pliku nagłówkowym na samej górze pliku dodać:
KOD cpp:   •  UKRYJ  •
#define NO_WIN32_LEAN_AND_MEAN // <- dodajesz tylko to, resztÄ™ masz

#include <vcl.h>
#pragma hdrstop


Jeżeli to nie rozwiąże problemu to musisz poszukać patche do środowiska Borland C++ Builder 6 Personal, ale o to może być trudno.
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: Problem z ansistringami builder c++

Nowy postprzez narelo » Å›roda, 2 lutego 2011, 00:12

Niestety nie przynioslo to porzadanego skutku, w dalszym ciagu builder wysypuje kilkadziesiat bledow.
Jest mi niezmiernie milo, ze ktos wyrazil chec pomocy.
Bede probowal dalej szukac, patchy juz tez szukalem. Mimo wszystko dziekuje za pomoc
Avatar użytkownika
narelo
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): wtorek, 1 lutego 2011, 22:42
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP
Kompilator: builder c++
Gadu Gadu: 0
    Windows XPChrome

Re: Problem z ansistringami builder c++

Nowy postprzez Cyfrowy Baron » Å›roda, 2 lutego 2011, 00:21

Ten błąd występuje tylko w środowisku C++Builder 4 i 6, niestety bez patche nie da się go chyba usunąć.
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: Problem z ansistringami builder c++

Nowy postprzez Cyfrowy Baron » Å›roda, 2 lutego 2011, 00:31

W pliku nagłówkowym masz już taki wpis:

KOD cpp:   •  UKRYJ  •
#pragma link "SHDocVw_OCX"


dodaj jeszcze taki:

KOD cpp:   •  UKRYJ  •
#pragma link "shdocvw"


Nie gwarantuję, że to pomoże, ale nie zawadzi sprawdzić
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: Problem z ansistringami builder c++

Nowy postprzez narelo » Å›roda, 2 lutego 2011, 11:23

Kod: Zaznacz cały
[Linker Fatal Error] Fatal: Unable to open file 'SHDOCVW.OBJ'


jeszcze dzisiaj spróbuje poszukać jakiś patch'y, a nóż coś się trafi
Avatar użytkownika
narelo
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): wtorek, 1 lutego 2011, 22:42
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP
Kompilator: builder c++
Gadu Gadu: 0
    Windows XPChrome


  • 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ł: Google [Bot] i 3 gości