[BCC32 Error] Unit7.cpp(23): E2451 Undefined symbol 'ClientSocket1' |
[BCC32 Error] Unit7.cpp(88): E2034 Cannot convert 'long *' to 'const char *' |
dlatego odwołując się w tej funkcji do elementów formularza Form7 musisz je odpowiednio adresować, czyli:
Nie wiem dlaczego polymorphism wstawia tam max, gdyż kompilator tego nie przełknie.
polymorphism napisał(a):Zuo! Niech po prostu zrobi metodę, tak jak napisałem, i problem zniknie.
Cyfrowy Baron napisał(a):dlatego odwołując się w tej funkcji do elementów formularza Form7 musisz je odpowiednio adresować, czyli:
polymorphism napisał(a):Wystarczy rzutować na char* i przełknie:
polymorphism napisał(a):Poczytaj, czym się różni metoda od zwykłej funkcji.
Cyfrowy Baron napisał(a):Funkcja SendExact nie należy do klasy TForm7 dlatego nic nie wie o elementach tej klasy, dlatego odwołując się w tej funkcji do elementów formularza Form7 musisz je odpowiednio adresować, czyli:KOD cpp: UKRYJunsigned sent = Form7->ClientSocket1->Socket->SendBuf(p,size);
polymorphism napisał(a):Wystarczy rzutować na char* i przełknie:KOD cpp: UKRYJSendExact((char*)&max,sizeof(long));
większość kodów piszę z palca, więc pewne rzeczy mogę pomijać.
[BCC32 Error] Unit7.cpp(36): E2034 Cannot convert 'const char *' to 'void *' |
Czy tu chodzi o metody: metody wirtualne
Tu nadal jest błąd:
[ILINK32 Error] Error: Unresolved external 'TForm7::SendExact(const char *, unsigned int)' referenced from C:\DOCUMENTS AND SETTINGS\USER\MOJE DOKUMENTY\RAD STUDIO\PROJECTS\DEBUG\UNIT7.OBJ |
gregor napisał(a):Czy tu chodzi o metody: metody wirtualne
Bo tylko to znalazłem
Cyfrowy Baron napisał(a):Chodzi o funkcję składową klasy, czyli w pliku nagłówkowym Unit7.h sekcji public lub private należy umieścić deklarację tej funkcji. Pisze to gwoli wyjaśnienia, gdyż osoby dopiero uczące się programowania, nie zawsze potrafią posługiwać się odpowiednią terminologią
gregor napisał(a):Tu nadal jest błąd:
Cyfrowy baron napisał(a):Chodzi o to, że zmienna max jest typu long, a funkcja SendExact oczekuje jako pierwszego argumentu typu const char.
[BCC32 Error] Unit7.cpp(36): E2034 Cannot convert 'const char *' to 'void *' |
[BCC32 Error] Unit7.cpp(36): E2034Nie można konwertować typu 'const char *' na typ 'void *' |
gregor napisał(a):No tak rzutuje:KOD cpp: UKRYJunsigned sent = Form7->ClientSocket1->Socket->SendBuf((char*)p,size);
Unresolved external 'TForm7::SendExact
(...) że gdzieś czytałem „metoda jest umieszczana i usuwana razem z obiektem”
polymorphism napisał(a):Błąd ten oznacza to, że linker nie może znaleźć implementacji metody. Jeszcze może poczytaj o implementacji metod, bo chyba przeoczyłeś tę część (linku, który podałem, jest to opisane).
W tym konkretnym przypadku musisz tłumaczyć dokładniej (...)
polymorphism napisał(a):W tym konkretnym przypadku musisz tłumaczyć dokładniej (...)
W linku, który dostał wszystko jest opisane. Wystarczy skojarzyć pewne fakty i samemu kombinować.
To chyba znaczy, że jest to niewykonalne (albo ja jeszcze za mało potrafię )
Cyfrowy Baron napisał(a):KOD cpp: UKRYJvoid __fastcall TForm6::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket)
{
static int fNr = 0;
String fileName = ExtractFilePath( ParamStr(0) ) + "file_" + (String)fNr + ".jpg";
...
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość