Práce s ".ini" soubory   zodpovězená otázka

VB.NET, I/O operace

Má VB zabudovánu nějakou podporu pro pohodlnou práci s textovými soubory, které mají strukturu shodnou (nebo velmi podobnou), jako soubory konfiguračního nastavení - hlavně v minulosti tolik používané ".ini" soubory:

[Header]
PartID=SF 511/513 geM L
PartName=Hrdlo přímé, závit metrický - kompletní
...

[TableStructure]
ItemCount=11
Item1.ID=B
Item1.Name=B
Item1.Type=N
Item1.UnitsType=1
Item1.FieldInfo=OK hrdla
Item2.ID=L
Item2.Name=L
Item2.Type=N
Item2.UnitsType=1
Item2.FieldInfo=Délka
Item3.ID=S
...

[TableData]
Row1=6;6;10;8;14;14;23;8.5;14.5;12;4
Row2=8;8;12;12;17;17;25;10;14.5;14;6
...

atd.

Jedná se mi hlavně o možnost dostat tato "strukturovaná" data do nějaké rozumné struktury, se kterou by se dalo pracovat (zobrazit případně editovat) a pak zpětně v případě modifikace uložit do texttového souboru.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jsou v zásadě 3 možnosti:

1) Napsat si to sám. Není to zase tak těžké a výhoda je hlavně v tom, že si soubor načtete do datové struktury, která vám vyhovuje a se kterou se vám bude dobře pracovat. Stačí např. ve While cyklu číst řádek po řádku a podle toho, čím začíná, přiřazovat hodnoty na příslušná místa. A v proměnné si pamatovat, ve které jste zrovna sekci.

2) Použít klasické API funkce WritePrivateProfileString a ReadPrivateProfileString, které jsou k tomu určeny. Práce s nimi je ale trochu neohrabaná - mě osobně se nelíbí, ale je to čistě můj subjektivní názor.

3) Použít knihovnu IniFile, kterou již napsal někdo jiný. Ke stažení je na adrese http://www.codeproject.com/vb/net/VbNetC... . V článku je i ukázka použití, mě osobně přijde jednoduché a jasné. Umí toho dokonce daleko víc, než potřebujete, např. export do XML atd.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky, přesně tak jsem to myslel - vím, že vlastní mechanismus není díky jednoduché syntaxi souborů složitý, ale protože tato struktura je (nebo alespoň v minulosti bývala) dost běžná předpokládal jsem, že již tento problém někdo řešil přede mnou (a vzhlenem k mým skromným basicovským znalostem s dost vysokou pravděpodobností mnohem elegantněji, než kdybych se o to pokoušel sám).

Varianty 2 a 3 si proto prostuduji a vyzkouším a pokud mi to nevyhoví, alespoň budu mít další ideový zdroj pro pokoření varianty 1.

Děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ještě bych si dovolil pozeptat, v jakém jmenném prostoru ty Api funkce z možnosti 2 najdu? (Jakou referenci si do projektu přidat?) V Microsofťácké dokumentaci jsem totiž našel pouze odkazy na VBA (evidentně u MS se už nejedná o protěžovanou formu ukládání dat). Jinak ta knihovna dle 3 je velice pěkná, hlavně ten popis - úplná kuchařka, dle které si to každý může případně udělat sám k obrazu svému.

ještě jednou dík.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Win32 API funkce nenajdete v žádném jmenném prostoru a to proto, že je to neřízený (Unmanaged) kód uvnitř systémových knihoven (ve většině případů user32.dll, kernel32.dll což je v podstatě jádro systému). Abyste mohl tyto funkce používat, musíte je ve své aplikaci nadeklarovat buď jako Public Declare Auto Function [Název] Lib "knihovna" <parametry> nebo pomocí atributu <DllImport>. Také vaše aplikace musí mít oprávnění ke spouštění neřízeného kódu což je ve většině případů splněno. Pomocí "Add Reference..." můžete přidávat pouze .NET komponenty, typové knihovny (*.tlb) nebo objekty s COM rozhraním. Navíc při používání neřízeného kódu je třeba řešit tzv. Marshaling, což je konverze mezi Managed a Unmanaged datovými typy. Dokumentaci k API funkcím lze nalézt v MSDN v kapitole Platform SDK.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji!

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback