Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



funkce

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: funkce

Autor: JiriValerian

23:28:37 09.03.2010

[color=#008000]J.T Napsal:
-------------------------------------------------------
> Děkuju.
> Ještě se musím zaptat: Jak pomocí FindFirstFile
> otestovat existenci souboru jehož název je načten
> v položce ListBoxu?
>[/color]

Načíst řetězec z listboxu např. pomocí zprávy

[b]LB_GETTEXT Message[/b]
http://msdn.microsoft.com/en-us/library/bb761313(VS.85).aspx

a pak použít při vyhledávání

[b]FindFirstFile Function[/b]
http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx

Konkrétní použití pro Váš účel už si odvodíte podle popisu zmíněných funkcí v [b]MSDN[/b].

Citovat příspěvek

 

Re: funkce

Autor: J.T

17:30:35 09.03.2010

Děkuju.
Ještě se musím zaptat: Jak pomocí [bold]FindFirstFile[/bold] otestovat existenci souboru jehož název je načten v položce [bold]ListBoxu[/bold]?

Citovat příspěvek

 

Re: funkce

Autor: JiriValerian

12:54:55 09.03.2010

[color=#008000]J.T Napsal:
-------------------------------------------------------
> Zdravím Vás, zatím jsem spáchal jen tohle:
>
> bool load()
> {
> char FileNm;
> HKEY key = NULL;
>
> if(RegOpenKeyEx(HKEY_CURRENT_USER,
> L"Software\\SPH2009",
> 0, KEY_READ, &key) != ERROR_SUCCESS) return
> false;
>
> DWORD typ = REG_SZ, size = MAX_PATH;
>
> if(
> RegQueryValueEx(
> key,
> L"Library",
> 0,
> &typ,
> (LPBYTE)FileNm,
> &size
> ) != ERROR_SUCCESS)return false;
>
>
> RegCloseKey(key);
>
>
> return true;
> }
>
> ale hlásí mi to chyby:
> 1>Linking...
> 1>stdafx.obj : error LNK2028: unresolved token
> (0A000010) "extern "C" long __stdcall RegCloseKey(struct HKEY__ *)"...
>
> nechápu co tomu chybí?
>[/color]

V seznamu s projektem linkovaných knihoven v nastavení parametrů linkeru Vám chybí [b]advapi32.lib[/b].
Dá se to zastoupit pragma definicí zapsanou na začátek zdrojáku.

[b]#pragma comment(lib, "advapi32.lib")[/b]

Citovat příspěvek

 

Re: funkce

Autor: Farao

10:22:58 09.03.2010

Chybí tomu přilinkování příslušného .lib souboru, který obsahuje implementaci těch funkcí. Jeho jméno je vždy uvedeno u popisu funkce v msdn.

Citovat příspěvek

 

Re: funkce

Autor: J.T

0:12:24 09.03.2010

Zdravím Vás, zatím jsem spáchal jen tohle:
[code][size=12px]
[color=#0040FF]bool[/color] load[color=#0040FF]([/color][color=#0040FF])[/color]
[color=#0040FF]{[/color]
[color=#0040FF]char[/color] FileNm[color=#0040FF][[/color]MAX_PATH[color=#0040FF]][/color][color=#0040FF];[/color]
HKEY key [color=#0040FF]=[/color] NULL[color=#0040FF];[/color]

[color=#0040FF]if[/color][color=#0040FF]([/color]RegOpenKeyEx[color=#0040FF]([/color]HKEY_CURRENT_USER[color=#0040FF],[/color]
L[color=#FF0000]"Software\\SPH2009"[/color][color=#0040FF],[/color]
0[color=#0040FF],[/color] KEY_READ[color=#0040FF],[/color] [color=#0040FF]&[/color]key[color=#0040FF])[/color] [color=#0040FF]![/color][color=#0040FF]=[/color] ERROR_SUCCESS[color=#0040FF])[/color] [color=#0040FF]return[/color] [color=#0040FF]false[/color][color=#0040FF];[/color]

DWORD typ [color=#0040FF]=[/color] REG_SZ[color=#0040FF],[/color] size [color=#0040FF]=[/color] MAX_PATH[color=#0040FF];[/color]

[color=#0040FF]if[/color][color=#0040FF]([/color]
RegQueryValueEx[color=#0040FF]([/color]
key[color=#0040FF],[/color]
L[color=#FF0000]"Library"[/color][color=#0040FF],[/color]
0[color=#0040FF],[/color]
[color=#0040FF]&[/color]typ[color=#0040FF],[/color]
[color=#0040FF]([/color]LPBYTE[color=#0040FF])[/color]FileNm[color=#0040FF],[/color]
[color=#0040FF]&[/color]size
[color=#0040FF])[/color] [color=#0040FF]![/color][color=#0040FF]=[/color] ERROR_SUCCESS[color=#0040FF])[/color][color=#0040FF]return[/color] [color=#0040FF]false[/color][color=#0040FF];[/color]


RegCloseKey[color=#0040FF]([/color]key[color=#0040FF])[/color][color=#0040FF];[/color]


[color=#0040FF]return[/color] [color=#0040FF]true[/color][color=#0040FF];[/color]
[color=#0040FF]}[/color][/size][/code]

ale hlásí mi to chyby:
[color=#FF0000]1>Linking...
1>stdafx.obj : error LNK2028: unresolved token (0A000010) "extern "C" long __stdcall RegCloseKey(struct HKEY__ *)" (?RegCloseKey@@$$J14YGJPAUHKEY__@@@Z) referenced in function "bool __clrcall load(void)" (?load@@$$FYM_NXZ)
1>stdafx.obj : error LNK2028: unresolved token (0A000034) "extern "C" long __stdcall RegOpenKeyExA(struct HKEY__ *,char const *,unsigned long,unsigned long,struct HKEY__ * *)" (?RegOpenKeyExA@@$$J220YGJPAUHKEY__@@PBDKKPAPAU1@@Z) referenced in function "bool __clrcall load(void)" (?load@@$$FYM_NXZ)
1>stdafx.obj : error LNK2028: unresolved token (0A00004D) "extern "C" long __stdcall RegQueryValueExA(struct HKEY__ *,char const *,unsigned long *,unsigned long *,unsigned char *,unsigned long *)" (?RegQueryValueExA@@$$J224YGJPAUHKEY__@@PBDPAK2PAE2@Z) referenced in function "bool __clrcall load(void)" (?load@@$$FYM_NXZ)
1>stdafx.obj : error LNK2019: unresolved external symbol "extern "C" long __stdcall RegCloseKey(struct HKEY__ *)" (?RegCloseKey@@$$J14YGJPAUHKEY__@@@Z) referenced in function "bool __clrcall load(void)" (?load@@$$FYM_NXZ)
1>stdafx.obj : error LNK2019: unresolved external symbol "extern "C" long __stdcall RegQueryValueExA(struct HKEY__ *,char const *,unsigned long *,unsigned long *,unsigned char *,unsigned long *)" (?RegQueryValueExA@@$$J224YGJPAUHKEY__@@PBDPAK2PAE2@Z) referenced in function "bool __clrcall load(void)" (?load@@$$FYM_NXZ)
1>stdafx.obj : error LNK2019: unresolved external symbol "extern "C" long __stdcall RegOpenKeyExA(struct HKEY__ *,char const *,unsigned long,unsigned long,struct HKEY__ * *)" (?RegOpenKeyExA@@$$J220YGJPAUHKEY__@@PBDKKPAPAU1@@Z) referenced in function "bool __clrcall load(void)" (?load@@$$FYM_NXZ)[/color]

nechápu co tomu chybí?

Citovat příspěvek

 

Re: funkce

Autor: JiriValerian

19:30:39 08.03.2010

[color=#008000]J.T Napsal:
-------------------------------------------------------
> struct DAT {
> char path;
> BYTE used;
> };
>
> std::vector data;
>
> bool load()
> {
> TRegistry *reg = new TRegistry();
> reg->RootKey = HKEY_CURRENT_USER ;
> reg->OpenKey("Software\\SPH2009",false);
>
> AnsiString FileNm = "";
>
> FileNm = reg->ReadString("Library");
> delete reg;
>
> if(FileNm.Length()==0)return false;
>
> if(!FileExists(FileNm))
> {
> ShowMessage("Soubor dat nenalezen!");
> return false;
> }
>
> FILE *f = fopen(FileNm.c_str(), "rb");
> if(f==NULL) return false;
>
> fseek(f,0,SEEK_END);
> int end = ftell(f)-1920;
>
> DAT n;
>
> for(int i = 0; i<=end; i+=1920)
> {
> fseek(f,i,SEEK_SET);
> fread(&n.used, 1, 1, f);
>
> fseek(f,i+660,SEEK_SET);
> fread(n.path, 1, MAX_PATH, f);
>
> data.push_back(n);
> }
>
> fclose(f);
>
> return true;
> }
> Pomůžete mi prosím přepsat tuhle funkci z projektu
> formové aplikace v Turbo C++ do projektu ve V.S.?
>[/color]

Namísto [b]AnsiString[/b] použíjte klasické [b]pole charů[/b].

Namísto [b]FileExists[/b] použijte Win API funkci [b]FindFirstFile[/b]
Úpravu pro použití [b]FindFirstFile[/b] jistě zvládnete sám podle popisu funkce.
http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx

Namísto [b]ShowMessage[/b] použijte Win API funkci [b]MessageBox[/b]
Úpravu pro použití [b]MessageBox[/b] jistě zvládnete sám podle popisu funkce.
http://msdn.microsoft.com/en-us/library/ms645505(VS.85).aspx

Namísto třídy [b]TRegistry[/b] a jejich metod použijte API funkce pro práci s registry podle článku viz odkaz:
http://www.builder.cz/art/cpp/win_api_23.html
Úpravu pro použití příslušných funkcí jistě zvládnete sám podle popisu v článku.

Ostatní záležitosti můžete ponechat stejné.

Citovat příspěvek

 

Re: funkce

Autor: J.T

15:29:43 08.03.2010

[code][size=12px][color=#0040FF]struct[/color] DAT [color=#0040FF]{[/color]
[color=#0040FF]char[/color] path[color=#0040FF][[/color]MAX_PATH[color=#0040FF]][/color][color=#0040FF];[/color]
BYTE used[color=#0040FF];[/color]
[color=#0040FF]}[/color][color=#0040FF];[/color]

std[color=#0040FF]:[/color][color=#0040FF]:[/color]vector[color=#0040FF]<[/color]DAT[color=#0040FF]>[/color] data[color=#0040FF];[/color]

[color=#0040FF]bool[/color] load[color=#0040FF]([/color][color=#0040FF])[/color]
[color=#0040FF]{[/color]
TRegistry [color=#0040FF]*[/color]reg [color=#0040FF]=[/color] [color=#0040FF]new[/color] TRegistry[color=#0040FF]([/color][color=#0040FF])[/color][color=#0040FF];[/color]
reg[color=#0040FF]-[/color][color=#0040FF]>[/color]RootKey [color=#0040FF]=[/color] HKEY_CURRENT_USER [color=#0040FF];[/color]
reg[color=#0040FF]-[/color][color=#0040FF]>[/color]OpenKey[color=#0040FF]([/color][color=#FF0000]"Software\\SPH2009"[/color][color=#0040FF],[/color][color=#0040FF]false[/color][color=#0040FF])[/color][color=#0040FF];[/color]

AnsiString FileNm [color=#0040FF]=[/color] [color=#FF0000]""[/color][color=#0040FF];[/color]

FileNm [color=#0040FF]=[/color] reg[color=#0040FF]-[/color][color=#0040FF]>[/color]ReadString[color=#0040FF]([/color][color=#FF0000]"Library"[/color][color=#0040FF])[/color][color=#0040FF];[/color]
[color=#0040FF]delete[/color] reg[color=#0040FF];[/color]

[color=#0040FF]if[/color][color=#0040FF]([/color]FileNm[color=#0040FF].[/color]Length[color=#0040FF]([/color][color=#0040FF])[/color][color=#0040FF]=[/color][color=#0040FF]=[/color]0[color=#0040FF])[/color][color=#0040FF]return[/color] [color=#0040FF]false[/color][color=#0040FF];[/color]

[color=#0040FF]if[/color][color=#0040FF]([/color][color=#0040FF]![/color]FileExists[color=#0040FF]([/color]FileNm[color=#0040FF])[/color][color=#0040FF])[/color]
[color=#0040FF]{[/color]
ShowMessage[color=#0040FF]([/color][color=#FF0000]"Soubor dat nenalezen!"[/color][color=#0040FF])[/color][color=#0040FF];[/color]
[color=#0040FF]return[/color] [color=#0040FF]false[/color][color=#0040FF];[/color]
[color=#0040FF]}[/color]

FILE [color=#0040FF]*[/color]f [color=#0040FF]=[/color] fopen[color=#0040FF]([/color]FileNm[color=#0040FF].[/color]c_str[color=#0040FF]([/color][color=#0040FF])[/color][color=#0040FF],[/color] [color=#FF0000]"rb"[/color][color=#0040FF])[/color][color=#0040FF];[/color]
[color=#0040FF]if[/color][color=#0040FF]([/color]f[color=#0040FF]=[/color][color=#0040FF]=[/color]NULL[color=#0040FF])[/color] [color=#0040FF]return[/color] [color=#0040FF]false[/color][color=#0040FF];[/color]

fseek[color=#0040FF]([/color]f[color=#0040FF],[/color]0[color=#0040FF],[/color]SEEK_END[color=#0040FF])[/color][color=#0040FF];[/color]
[color=#0040FF]int[/color] end [color=#0040FF]=[/color] ftell[color=#0040FF]([/color]f[color=#0040FF])[/color][color=#0040FF]-[/color]1920[color=#0040FF];[/color]

DAT n[color=#0040FF];[/color]

[color=#0040FF]for[/color][color=#0040FF]([/color][color=#0040FF]int[/color] i [color=#0040FF]=[/color] 0[color=#0040FF];[/color] i[color=#0040FF]<[/color][color=#0040FF]=[/color]end[color=#0040FF];[/color] i[color=#0040FF]+[/color][color=#0040FF]=[/color]1920[color=#0040FF])[/color]
[color=#0040FF]{[/color]
fseek[color=#0040FF]([/color]f[color=#0040FF],[/color]i[color=#0040FF],[/color]SEEK_SET[color=#0040FF])[/color][color=#0040FF];[/color]
fread[color=#0040FF]([/color][color=#0040FF]&[/color]n[color=#0040FF].[/color]used[color=#0040FF],[/color] 1[color=#0040FF],[/color] 1[color=#0040FF],[/color] f[color=#0040FF])[/color][color=#0040FF];[/color]

fseek[color=#0040FF]([/color]f[color=#0040FF],[/color]i[color=#0040FF]+[/color]660[color=#0040FF],[/color]SEEK_SET[color=#0040FF])[/color][color=#0040FF];[/color]
fread[color=#0040FF]([/color]n[color=#0040FF].[/color]path[color=#0040FF],[/color] 1[color=#0040FF],[/color] MAX_PATH[color=#0040FF],[/color] f[color=#0040FF])[/color][color=#0040FF];[/color]

data[color=#0040FF].[/color]push_back[color=#0040FF]([/color]n[color=#0040FF])[/color][color=#0040FF];[/color]
[color=#0040FF]}[/color]

fclose[color=#0040FF]([/color]f[color=#0040FF])[/color][color=#0040FF];[/color]

[color=#0040FF]return[/color] [color=#0040FF]true[/color][color=#0040FF];[/color]
[color=#0040FF]}[/color][/size][/code]
Pomůžete mi prosím přepsat tuhle funkci z projektu formové aplikace v Turbo C++ do projektu ve V.S.?

Citovat příspěvek

 

Re: funkce

Autor: J.T

16:45:59 07.03.2010

Díky moc.

Citovat příspěvek

 

Re: funkce

Autor: JiriValerian

16:27:54 07.03.2010

[color=#008000]J.T Napsal:
-------------------------------------------------------
> Zdravím, běžně dělám v Turbu C++ 2006, ale teď se
> snažím udělat jednoduchý prográmek ve VS Express
> 2008.
>
> Mám textová data v polích char[256] a chci ty data
> zkopírovat do pole typu wchar_t[256].
>[/color]

Pokud máte na mysli konverzi z [b]ANSI textového řetězce[/b] tj. vždy zakončeného 0 například [b]na UNICODE textový řetězec[/b] pak viz odkaz.

[b]MultiByteToWideChar Function[/b]
http://msdn.microsoft.com/en-us/library/dd319072(VS.85).aspx

[b]Příklad:[/b]
[size=14px][code][color=#0000FF]char[/color] aBuf[color=#800000][[/color][color=#0000FF]256[/color][color=#800000]][/color] [color=#800000]=[/color] [color=#800080]"řetězec ANSI ve Win 1250"[/color][color=#800000];[/color]
wchar_t wBuf[color=#800000][[/color][color=#0000FF]256[/color][color=#800000]][/color][color=#800000];[/color]

ZeroMemory[color=#800000]([/color]wBuf[color=#800000],[/color][color=#0000FF]sizeof[/color][color=#800000]([/color]wBuf[color=#800000])[/color][color=#800000])[/color][color=#800000];[/color]
MultiByteToWideChar[color=#800000]([/color][color=#0000FF]1250[/color][color=#800000],[/color][color=#0000FF]0[/color][color=#800000],[/color]aBuf[color=#800000],[/color][color=#800000]-[/color][color=#0000FF]1[/color][color=#800000],[/color]wBuf[color=#800000],[/color][color=#0000FF]255[/color][color=#800000])[/color][color=#800000];[/color]
[/code][/size]

Citovat příspěvek

 

funkce

Autor: J.T

16:12:39 07.03.2010

Zdravím, běžně dělám v Turbu C++ 2006, ale teď se snažím udělat jednoduchý prográmek ve VS Express 2008.

Mám textová data v polích [bold]char[256][/bold] a chci ty data zkopírovat do pole typu [bold]wchar_t[256][/bold].

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: