Autor Téma: I/O error 103 - filesize(f)  (Přečteno 4987 krát)

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3004
  • Karma: 108
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:I/O error 103 - filesize(f)
« Odpověď #30 kdy: 31-05-2017, 08:41:24 »
Excellent
Rated 1 time
Citace
TMemIniFile je IMHO takova typicka Delfovstina, kdy nekdo vytvoril neco, co se tvari jako INI file a neni to INI file v puvodnim slova smyslu: Presunul tu pamet z rezije OS do rezije aplikace, inicializuje se explicitne volanim LoadFromXXX, nema automaticky write back a se souborem zachazi skutecne jako se souborem, jako by si nekdo cetl radky do string listu a zase je jako celek zpatky zapisoval.

Ano, proto je to TMemIniFile - je to něco co odstranuje problémy INI, tj. to co ty označuješ za plusy. Je exaktně řečeno, kdy je soubor čten a případně ( v mém případě nikdy) zapisován. Proto ho mám rád.

Citace
Osobne jsem TMemIniFile nikdy nevzal na milost, protoze jakmile vidim valet se nekde po disku neco, co ma priponu .INI a format, ktery to pripomina, musi predpokladat, ze se s tim operuje tradicnim zpusobem pres WinAPI a ze to vlastne zadny soubor neni a prestali jsme .INI pred drahnou radkou let pouzivat uplne.
To nemá cenu snad ani komentovat,  podle mne úplně mimo. Ale naštěstí může mít každý svůj názor.

Citace
Jinak sdilim nazor na ty silene archaicke I/O Wirthoviny a pokud potrebuju k aplikaci dat nejaka konfiguracni data, tak to udelam .config souborem stejne jako treba Firebird a rada dalsich nebo pouziju XML, coz je na platforme Windows standard, ktery mi neklade zadna omezeni a mohu do nej nacpat skutecne jakakoli data, narozdil treba do Json - ten pouzivam tam, kam patri: ve sveta JavaScriptu a predavani dat mezi HTTP serverem a browserem.

Ad I/O souhlasím, ale to tvrzení ohledně XML je trošku divné. Přece abych si načetl nějaká data, nebudu k tomu linkovat a vytvářet zbytečně celý nějaký mechanismus pro XML (natožpak std. MS XML, který je jednou z nejčastěji záplatovaných součástí - pokud to není nutné).  Ale asi je to moderní - čím více dependency, tím více cool.

Na druhou stranu se dá XML třeba validovat, ale to je mi v tomto případě ukradené.

A strašně mne baví vysvětlovat nějakému BFU člověku jak má otevřít soubor s nějakou divnou příponou .config, ale tohle berte s rezervou, protože skryté přípony jsou taky peklo.

Zůstávám u .ini a TMemIniFile.
Embarcadero MVP - Czech republic

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3339
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:I/O error 103 - filesize(f)
« Odpověď #31 kdy: 31-05-2017, 09:08:02 »
tj. to co ty označuješ za plusy.
Jak jsi prisel na to, ze to oznacuju za plusy :-O Jen popisuju holou skutecnost, co to puvodni INI file je a ze to rada programatoru nevi... A INI file povazuju jenom za minus, bez ohledu na to, jestli puvodni nebo jeho MEM variantu prave kvuli nejednoznacnosti, ze u cizi aplikace nevis, co od toho muzes cekat + nedostatecna struktura dat.

Citace
Na druhou stranu se dá XML třeba validovat
No nejen. Pokud jsi videl nejaky konfigurak treba z platformy .NET, ktery podporuje persistenci objektu tj. definuju, ze nejaka sekce v XML reprezentuje nejakou tridu, tak se mi subsystem konfiguraci postara o jejich nacteni/ulozeni vcetne silne typove kontroly hodnot apod. A v aplikaci pracuju jen s objekty.  A tak ma podle mne vypadat programovani spadajici pod objektove paradigma. 
« Poslední změna: 31-05-2017, 09:21:04 od pf1957 »

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3339
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:I/O error 103 - filesize(f)
« Odpověď #32 kdy: 31-05-2017, 09:20:00 »
Excellent
Rated 1 time
Ten článek je z 26. 11. 2007. Stačí se podívat do zdrojového kódu všech winOS od té doby, aby bylo jasné, jak to s MS a INI opravdu je.  :D
To je docela hloupy argument, ze je clanek z roku 2007. To vubec nic nevypovida o jeho platnosti/i neplatnosti - s prichodem NT byvaly daleko starsi clanky v MSDN, ktere popisovaly uskali .INI souboru a porad v Platform SDK jsou s popisem, jak to mapuji do Registry a s poznamkou, ze jsou to funkce jen kvuli kompatibilite s 16-bitovymi Windows a ze se nemaji pouzivat.

BTW, ty ses do tech kodu Windows dival? Stale jsou to funkce v kernel32.dll

Offline našinec

  • Hrdina
  • ****
  • Příspěvků: 423
  • Karma: 5
Re:I/O error 103 - filesize(f)
« Odpověď #33 kdy: 31-05-2017, 09:41:57 »
Ano, v roce 2007 bylo trendem vše cpát do registrů. Ale od té doby se hodně změnilo. U běžných programů, například obdobných jako stojí za tímto vláknem, se upřednostňuje přenositelnost. Původně za tímto trendem právě stálo zbytečně si nezasírat registry. Samozřejmě u velkých(podnikových) programů je to trochu jinak.

Offline Sender

  • Plnoletý
  • ***
  • Příspěvků: 184
  • Karma: 5
    • Verze Delphi: Delphi 7 Prof.
Re:I/O error 103 - filesize(f)
« Odpověď #34 kdy: 31-05-2017, 09:51:52 »
Excellent
Rated 2 times
Při čtení tototo tématu je zřejmé,že každý programátor to vidí trošku jinak (programuje jiné aplikace).
Problém se zápisem do ini (v ProgramFiles) při zapnutém UAC se dá obejít úpravou manifestu.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3339
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:I/O error 103 - filesize(f)
« Odpověď #35 kdy: 31-05-2017, 09:58:23 »
Excellent
Rated 1 time
Při čtení tototo tématu je zřejmé,že každý programátor to vidí trošku jinak (programuje jiné aplikace).
Problém se zápisem do ini (v ProgramFiles) při zapnutém UAC se dá obejít úpravou manifestu.
Nic neobchazim a na mych pocitacich se do ProgramFiles nic nezapisuje, vyjma administratora po jeho uctem, ktery se pouziva vyhradne pro administraci a ne pro bezny provoz pocitace.  Aplikace, ktere nejsou dobre vychovane z pohledu Windows popr. se chteji instalovat nekam do rootu apod. na disku nemam a velmi pravdepodobne nikdy mit nebudu.