GetPrivateProfileStruct() z char* či string – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

GetPrivateProfileStruct() z char* či string – C / C++ – Fórum – Programujte.comGetPrivateProfileStruct() z char* či string – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Hunty
~ Anonymní uživatel
48 příspěvků
2. 11. 2012   #1
-
0
-

Ahoj,

trošku jsem se zakoukal z funkcí GetPrivateProfileStruct()/WritePrivateProfileStruct(), která z/do *.ini souboru načte/zapíše strukturu. Strukturu načte/zapíše v nějakém kódů.

Potřeboval bych to udělat tak, že bych tu strukturu zapsal/načetl stejným způsobem, jenže bych to načelt/zapsal z/do char* či string.

Jak bych to mohl udělat?
Děkuji

Nahlásit jako SPAM
IP: 193.86.229.–
Reklama
Reklama
Radek Chalupa
~ Redaktor
0
Super člen
2. 11. 2012   #2
-
0
-

#1 Hunty
Tyhle funkce bys hlavně neměl (v nové aplikaci) používat  . Jsou jen pro kompatibilitu z muzeálním Win-16..)

A pokud potřebuješ číst ini soubory do textu, tak si to načíst pomocí CreateFile, ReadFile do textového bufferu a vyseparovat ty sekce které chceš mít ve stringu.

Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 213.220.211.–
Hunty
~ Anonymní uživatel
48 příspěvků
2. 11. 2012   #3
-
0
-

CreateFile a ReadFile mi ale nepomohou. Musel bych data číst opět ze souboru.

Jak tahle funkce vlastně funguje? Struktura se nějak převede na checksum a pak? Nevím, možná kdybych pochopil tohle, mohl bych si něco napsat sám. ;)

Pokud bych je něměl používat v "nových aplikacích", existují zde nějaké alternativy?

Nahlásit jako SPAM
IP: 193.86.229.–
ingiraxo+15
Grafoman
2. 11. 2012   #4
-
0
-

a však jediný co potřebuješ je načíst ini soubor a uložit do stringu a opět ho případně uložit do .ini ne? to ti nestačí použití klasickýho čtení a zápisu souboru?

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Radek Chalupa
~ Redaktor
0
Super člen
3. 11. 2012   #5
-
0
-

Namísto ini souborů by se konfigurace měla zapisovat do registru, konkrétně větve hkey_current_user. Na to jsou WinAPI funkce RegCreateKeyEx, RegOpenKeyEx, RegSetValueEx a další.

Sám jsi psal že čteš z ini souboru, což není nic jiného než (příslušně strukturovaný) textový soubor, takže jak již zmínil kolega můžeš použít běžné céčkovské funkce pro čtení/zápis souborů, nebo jak jsem napsal ty WinAPI funkce...

Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 213.220.211.–
ingiraxo+15
Grafoman
3. 11. 2012   #6
-
0
-

#5 Radek Chalupa
nemyslíš, že registry jsou zlo? podle mě je lepší konfiguraci mít v souboru ať už má příponu jakoukoli.. možná rychlost načtení je o nějakou minisekundu větší ze souboru, ale potom je to rychlejší, když máš config načtenej v paměti

celkem se mi i osvědčila konfigurace v xml

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Radek Chalupa
~ Redaktor
0
Super člen
3. 11. 2012   #7
-
0
-

#6 ingiraxo
Určitě registry můžou a praxi bývají zlo, pokud je aplikace po sobě neuklízí a zaplácávají kdovíčím... Ale stejné zlo je v praxi např. složka AppData v uživatelském profilu. Stačí se podívat na její velikost po pár měsících používání, a hodně aplikací (včetně těch "populárních") tam po sobě i po odinstalaci zanechají desítky/stovky MB sajrajtu...:-(

Nevím jak to myslíš s tou pamětí? V každém případě mám konfiguraci v nějakých proměnných (resp. strukturách nebo třídách) do kterých je načtu a mám je samozřejmě v paměti aplikace. Často to řeším tak, že mám 2 varianty načítání/zápisu konfigurace a při spuštění zjistím zda program běží na harddisku počítače nebo na nějaké USB flashce, a pokud na flashce tak používám soubor (uložený vedle exáče na té flashce) a jinak většinou registry.

Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 213.220.211.–
ingiraxo+15
Grafoman
3. 11. 2012   #8
-
0
-

#7 Radek Chalupa
s tou pamětí jsem to myslel tak, že z registrů není vyloženě nutný to ukládat do paměti, ale jen si vždy sáhnout pro tu hodnotu (předpokládám, že v registru by nebylo nic, co by se volalo 10x za minutu)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Hunty
~ Anonymní uživatel
48 příspěvků
3. 11. 2012   #9
-
0
-

Jde o to, že se můj program připojí na vzdálený FTP server a stáhne obsah souboru pomocí funkce InternetReadFile(), to znamená, že obsah souboru je uložen v char*, string a pod. Tím pádem je přenos dat nezachytitelný. Pokud bych použil soubor na čtení těchto dat, je možné, že tento soubor bude přečten jinými nežádoucími aplikacemi.

Jestliže stažený char/string uložím do souboru, a poté použiju funkci GetPrivateProfileStruct(), abych rozluštil obsah struktury, je možné, že soubor bude přečten jinými nežádoucími aplikacemi, čož by bylo velice nepříjemné, pakliže by soubor obsahoval (a jakože obsahuje) citlivá data.

Pokud bych použil funkci CreateFile() s SharedMode=0, GetPrivateProfileStruct() by nefungoval.

Nahlásit jako SPAM
IP: 193.86.229.–
ingiraxo+15
Grafoman
3. 11. 2012   #10
-
0
-

takže pokud dobře chápu, tak ten .ini soubor stáhneš z FTP serveru.. v tom .ini souboru jsou teda citlivá data a ty se snažíš o to, aby tyhle data, tenhle .ini soubor nešlo zneužít? (např. přečíst jiným uživatelem)

proč to teda neuděláš binárně, případně soubor nějakým vlastním algoritmem nezašifruješ a jen aplikace bude znát dešifrovací postup a ještě místo .ini tomu dáš příponu třeba .dat/.bin

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
zlz
~ Anonymní uživatel
634 příspěvků
3. 11. 2012   #11
-
0
-

Jsou to šestnáctkové hodnoty jednotlivých bajtů. Poslední bajt je kontrolní součet spočítaný jako součet hodnot jednotlivých bajtů dat.

"abcd" -> "616263648A"

Nahlásit jako SPAM
IP: 78.156.159.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 86 hostů

Podobná vlákna

String^ to Char* — založil john

String to char — založil kadet

Char to string — založil lukas.balaz

String to char — založil eidam1995

Konverze string na char* — založil Petr

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý