Talisman Napisano Maj 31, 2019 Autor Zgłoś Napisano Maj 31, 2019 Jak powszechnie wiedomo Dev-C++ wykożystuje wieloplatformowy GCC. Tak więc moje pytanie dotyczy GCC i Rejestru Windows. Ale do rzeczy: ...jest taki kod: HKEY k; char regpath[]="Software\\Microsoft\\Windows\\CurrentVersion\\Run"; char valname[]="Program"; char source[]="C:\\Program.exe"; RegOpenKeyEx(HKEY_LOCAL_MACHINE, regpath, 0, KEY_WRITE, &k); RegSetValueEx(k, valname, 0, REG_SZ, source, lstrlen(source)+1); RegCloseKey(k); ...i wyskakuje taki błąd: 55 | C:\main.cpp | invalid conversion from `char*' to `const BYTE*' | ...a kod jest na bank poprawny, bo w BCB mi sie bez problemu kompiluje....jednak zależy mi bardzo żeby było to w GCC tzn. w Dev-C++ Aha....mam versje 4.9.8.0... Pozdro... Cytuj
Complex Napisano Maj 31, 2019 Zgłoś Napisano Maj 31, 2019 Prawdopodobnie wystarczy wstawić jawną konwersje i bedzie sie kompilowalo. Jak nie bedziesz wiedzal jak to daj znac. Napisz wtedy linie ktora wywala blad. powodzenia Cytuj
Talisman Napisano Maj 31, 2019 Autor Zgłoś Napisano Maj 31, 2019 pinolec napisał: Prawdopodobnie wystarczy wstawić jawną konwersje i bedzie sie kompilowalo. Jak nie bedziesz wiedzal jak to daj znac. Napisz wtedy linie ktora wywala blad. powodzenia Nie, raczej nie o to chodzi...:( Tu masz linie z błędem...: RegSetValueEx(k, valname, 0, REG_SZ, source, lstrlen(source)+1); ...zaznaczam, że błędów w tym kodzie jakotakich nie ma, gdyż jak już wspomniałem, kod się kompiluje pod BCB. Pozdrawiam... Cytuj
Complex Napisano Czerwiec 1, 2019 Zgłoś Napisano Czerwiec 1, 2019 guest napisał: RegSetValueEx(k, valname, 0, REG_SZ, source, lstrlen(source)+1); Wlasnie o to tu chodzi. Kompilator BCB jest mnie restrykcyjny i dokonuje konwersji niejawnej. GCC jest bardziej restrykcyjny i nie pasuja mu te typy. Przedostatni argument f. jest u Ciebie typu char* a powinien byc zgodnie z dokumentacja typu CONST BYTE * Sprobuj dodac rzutowanie (CONST BYTE *)source a powinno pojsc. powodzenia Cytuj
Talisman Napisano Czerwiec 1, 2019 Autor Zgłoś Napisano Czerwiec 1, 2019 Wielkie dzięki pinolec...pomogło... Jednakże mógłbyś po krótce napisać coś więcej o "rzutowaniu" w GCC...? Pozdrawiam... Cytuj
Complex Napisano Czerwiec 1, 2019 Zgłoś Napisano Czerwiec 1, 2019 Generalnie w C stosuje sie rzutowanie za pomocą nawiasow przed nazwa zniennej ktora chcemy rzutować np int a, b, c; a = (long)b + (long)c; oczywiscie to tylko przyklad i nie ma sensu konwersja inta do longa gdy w rezultacie i tak zapiszemy do inta. W CPP stosuje sie static_cast i dynamic_cast. Wiecej o rzutowaniu w CPP poczytasz tu https://www.intercon.pl/~sektor/cbx/appendix/casting.html Przegladnij tez reszte strony https://www.intercon.pl/~sektor/ Cytuj
Talisman Napisano Czerwiec 1, 2019 Autor Zgłoś Napisano Czerwiec 1, 2019 Wielkie dzieki stary... Cytuj
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.