Talisman Napisano Maj 31, 2019 Autor Zgłoś Udostępnij 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 Link do komentarza Udostępnij na innych stronach More sharing options...
Complex Napisano Maj 31, 2019 Zgłoś Udostępnij 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 Link do komentarza Udostępnij na innych stronach More sharing options...
Talisman Napisano Maj 31, 2019 Autor Zgłoś Udostępnij 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 Link do komentarza Udostępnij na innych stronach More sharing options...
Complex Napisano Czerwiec 1, 2019 Zgłoś Udostępnij 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 Link do komentarza Udostępnij na innych stronach More sharing options...
Talisman Napisano Czerwiec 1, 2019 Autor Zgłoś Udostępnij 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 Link do komentarza Udostępnij na innych stronach More sharing options...
Complex Napisano Czerwiec 1, 2019 Zgłoś Udostępnij 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 Link do komentarza Udostępnij na innych stronach More sharing options...
Talisman Napisano Czerwiec 1, 2019 Autor Zgłoś Udostępnij Napisano Czerwiec 1, 2019 Wielkie dzieki stary... Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
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.