Diskuze: Soubory - neplatná cesta

Člen

Zobrazeno 9 zpráv z 9.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |


Jakou hodnotu v době vyvolání výjimky (či těsně před provedením rewrite(f);) má SaveDialog1.FileName?
Moc přesně nechápu, co myslíš. Zkusím popsat, co se děje v programu, když běží. Chci vytvořit soubor, objeví se Save as, já napíšu název programu a dám uložit. Pak to asi 2 vteřinky trvá a objeví se chyba Runtime3. Takže bych řekl asi těsně před rewrite(f).
Ano, předpokládám, že chybu vyvolá volání Rewrite, což znamená otevření souboru. Proto chci vědět, jaký název souboru je přesně specifikován, což se děje ve volání
AssignFile(f, SaveDialog1.FileName);
Proto mě zajímá hodnota SaveDialog1.FileName těsně před voláním Rewrite.
Mno, myslím že na to kápl spíše Martin Dráb a zasloužil by za to označit řešení. Každopádně je mi divné, že by diakritika způsobila takové problémy. Na čem a v čem to píšeš (OS a IDE)?
Na starších Delphi (myslím, že pod 2010, ale už si to nepamatuju) knihovna VCL, která implementuje i TSaveDialog, nepodporuje Unicode, ale pouze ANSI kódování. A vzhledem k tomu, že OS je interně Unicode, dochází ke konverzi ANSI řetězců, ale pokud obsahují znaky s ASCII hodnotou vyšší než 127, nemusí ta konverze dopadnout tak, jak by si člověk přál.
Částečným řešením je používat explicitně řetězce WideString, ale neřeší to problém knihovny VCL.
Novější verze Delphi už přímo pod datovým typem string myslí Unicode řetězec.
Používám Windows 7 Home Premium, Lazarus -
Ale bohužel mám další problém. Hlásí mě to pro změnu chybu RunTime Error 103, což by měla být chyba, která se objeví pokud soubor není otevřen. Chybu jsem hledal, ale nemůžu najít. Tady už doopravdy nevím, co mám s tím udělat. Zkontroloval jsem si to s kamarádem a zdá se že kód je stejnej, ale mě to hlásí tuto chybu. Je to u Procedury 3 a 4, kdy zavřu soubor closefile; a u 4 přejdu na reset(f);
Nejsem si jistý, ale možná bys měl po zavření souboru přes CloseFile volat znovu AssignFile předtím, než se pokusíš o otevření (Reset, Rewrite, Append).
Taky to nemáš zrovna dobře navržené. Tvoje procedury mají šanci fungovat jen v přtípadě, že jsou volány v jistém (jistých) pořadích. Například pokud zavolám jako první proceduru č. 2, tak mi to zřejmě spadne, protože soubor nebyl otevřen, ale už se do něj pokoušíš zapisovat.
Doporučuju přepsat tak, že v rámci každé procedury soubor(y) otevřeš, provedeš s ním/nimi dané operace a zavřeš je. Tzn. žádná z procedur nebude očekávat, že nějaký soubor je otevřený a nebude žádný soubor otevírat a nechávat při svém ukončení nezavřený. Jména souborů si přenášej v rámci privátních či veřejných atributů třídy formuláře. Proměnné reprezentující soubory ti pak budou stačit deklarované lokálně v procedurách.
Zobrazeno 9 zpráv z 9.