1. |
char, int, long (mind) |
33 sor |
(cikkei) |
2. |
Re: Shortcut (mind) |
70 sor |
(cikkei) |
|
+ - | char, int, long (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Sziasztok,
Lattom masok is belefutottak abba a problemaba, hogy a C hivatalosan csak
azt definialja, hogy a char<=int<=long, de azt nem, hogy ezek mekkorak
pontosan. Vagyis forditotol fugg, hogy melyik valtozo tipus hany bites.
Ezt szeritem (legallabis egyenlore) ugy lehet a legjobban megoldani, hogy az
eber vagy typedef-fel, vagy define-nal definial byte, word, dword, ...
valtozokat, melyeket az aktualis forditohoz mindig beallit, hogy most eppen
melyik mi legyen
Pl: BorlandC
byte = unsigned char
word = unsigned int = unsigned short
dword= unsigned long
Djgpp
byte = unsigned char
word = unsigned short
dword = unsigned int = unsigned long
A gond csak a printf parancsoknal lesz, mivel a %d az int-et var ami az
egyik rendszerben 16 bit, mig a masikban 32 bit, igy a parameterek nem
lesznek jok. Ennek javitasa pedig csak ugy lehet, hogy a printf-eknel az
ember mindig megadja a tipust is
Pl: printf (" %d %ld",(int)valtozo1,(long)valtozo2);
Egyenlore nem igazan tudok jobb megoldast, ha valaki tobb fordito kozott
szeretne ugralni. De ha valakinek van jobb utlete azt szivesen latnam itt a
coderben.
Szasz Oliver
|
+ - | Re: Shortcut (mind) |
VÁLASZ |
Feladó: (cikkei)
|
On 16 Aug 1999 02:56:30 GMT, in hun.lists.hix.coder you wrote:
>Szevasztok Coderek!
>Tudna valaki egy olyan windows fuggvenyt, amely Shortcut-ot keszit.
itt egy fuggveny (sajat krealmany, lehet majd szidni), ami a
parameterben megadott file-hoz keszit shortcutot az aktualis
konyvtarba (ha a megadott file mar eleve shortcut, akkor egyszeruen
atmasolja, ha mar van ilyen akkor zarojelben sorszamot rak a vegere,
meg ilyen finomsagok):
BOOL CreateShortcut(LPSTR FromFile)
{
LPSTR Extension=FromFile+lstrlen(FromFile)-1;
while(Extension!=FromFile && Extension[0]!='.'
&& Extension[0]!='\\') Extension--;
BOOL
Shortcut=!lstrcmpi(Extension,".lnk")||!lstrcmpi(Extension,".pif");
TCHAR FileTitle[MAX_PATH];
GetFileTitle(FromFile,FileTitle,MAX_PATH);
DWORD ExeType=SHGetFileInfo(FromFile,0,0,NULL,SHGFI_EXETYPE);
BOOL TryAgain=TRUE;
for(UINT i=1; TryAgain; i++) {
wsprintf(FileName, i>1 ? "%s (%d)" : "%s", FileTitle, i);
if(!Shortcut) {
if(!lstrcmp((TCHAR*)&ExeType,"MZ"))
lstrcat(FileName,".pif");
else lstrcat(FileName,".lnk");
} else lstrcat(FileName,Extension);
WIN32_FIND_DATA FindData;
HANDLE Handle=FindFirstFile(FileName,&FindData);
if(Handle!=INVALID_HANDLE_VALUE)
FindClose(Handle);
else TryAgain=FALSE;
};
BOOL Valid=FALSE;
if(Shortcut) {
Valid=CopyFile(FromFile,FileName,TRUE);
} else {
HRESULT Result;
IShellLink * ShellLink;
Result=CoCreateInstance(CLSID_ShellLink,NULL,
CLSCTX_INPROC_SERVER,IID_IShellLink,(LPVOID*)&ShellLink);
if(SUCCEEDED(Result)) {
IPersistFile * PersistFile;
Result=ShellLink->QueryInterface(IID_IPersistFile,
(LPVOID*)&PersistFile);
if(SUCCEEDED(Result)) {
ShellLink->SetPath(FromFile);
WORD UnicodeFile[MAX_PATH];
MultiByteToWideChar(CP_ACP,0,FileName,-1,UnicodeFile,MAX_PATH);
Result=PersistFile->Save(UnicodeFile,TRUE);
PersistFile->Release();
Valid=SUCCEEDED(Result);
};
ShellLink->Release();
};
};
return Valid;
};
remelem ki tudsz igazodni rajta, utalok kommentezni :-) egyebkent
BC-ben az OLE Knowledge Base illetve az OLE2 Online Help nevu
help-file-okat erdemes bongeszni, ha ilyesmi kell.
:alvarez:
]:[http://www.adam.hu/alvarez]
... Sotetben a feny lassabban terjed!!!
|
|