Skocz do zawartości

Recommended Posts

Napisano

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... ;)

Napisano
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... ;)

Napisano
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

Napisano

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/

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...