Diskuze: Přesouvání souborů
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 26 zpráv z 26.
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 |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
to nedělej přes try catch mg
udělej to jednoduše takhle
using System.IO;
if(Directory.Exists(Path))
Directory.Copy nebo co si to chtěl
else
// tady si nic nechtěl tak tam prostě to else nebudeš dávat vůbec :)
no protože tam budeš mít catch, kterej vůbec nevyužiješ a vsadím se že ta moje verze se provede o malilinko rychleji x)
Takže i když jsem to udělal jak jsi řekl:
if (Directory.Exists(ahoj + "slozka"))
{
toolStripStatusLabel1.Text = "Přesouvám složku slozka do složky tajnaslozka!";
ProgressBar1.Value = 25;
Directory.Move(ahoj + "slozka", mejse + "tajnaslozka" + "\\tajnaslozka");
}
else
{
}
Tak to nefunguje 
Na spojování částí cesty používej Path.Combine(), vyřeší to za tebe problémy s chybějícími/existujícími lomítky.
Prázdnou else větev nepoužívej, prostě ji úplně vynech.
Prázdnou else větev nepoužívej, prostě ji úplně vynech:
To jsem měl jako první ještě než jsem zkusil try a catch prostě ifka šly
za sebou a stejně se to pořád zaseklo u toho prvního.
Path.Combine() to je co? Omlouvám se ale nejsem v C# tak skvělý. Používám jen to co potřebuji. Zbytek je pro mě zatím neznámá.
http://msdn.microsoft.com/…combine.aspx
"Na spojování částí cesty používej Path.Combine()"
Spojuje to části cesty.
String cesta = Path.Combine("C:\Hry", "MojeSuperHra", "soubor.txt")
obsah cesta pak bude "C:\Hry\MojeSuperHra\soubor.txt"
Nevím jaký 
Hoď si do té funkce na začátek breakpoint a krokuj (klávesa F9 defaultně)
a uvidíš, kudy program teče.
Mělo by to přece fungovat úplně jednoduše:
try {
Directory.Move(ahoj + "slozka", mejse + "tajnaslozka" + "\\tajnaslozka");
} catch {
// Chyba při přesunu
}
On prostě vykoná if zjistí pokud tam ta složka je a pokud není tak stojí a nepokračuje dále což je dost divné.
pošli jsem celou část tvého kódu ať i víme proč se zasekne
přijde mi divný že to nefunguje

if (Directory.Exists(slozka + "nejakaslozka"))
{
toolStripStatusLabel1.Text = "";
const string message = "Byla nalezena složka do které se má něco ukládat. Mám ji odstranit?";
const string caption = "Upozornění";
var result = MessageBox.Show(message, caption,
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Error);
if (result == DialogResult.Yes)
{
Directory.Delete(slozka + "nejakaslozka");
toolStripStatusLabel1.Text = "Vytvářím složku nejakaslozka";
ProgressBar1.Value = 15;
Directory.CreateDirectory(slozka + "nejakaslozka");
toolStripStatusLabel1.Text = "Zjišťuji, zda existuje složka tajnaslozka...";
ProgressBar1.Value = 20;
if (Directory.Exists(slozka + "tajnaslozka"))
{
toolStripStatusLabel1.Text = "Přesouvám složku tajnaslozka do složky nejakaslozka!";
ProgressBar1.Value = 25;
Directory.Move(slozka + "tajnaslozka", slozka + nejakaslozka + "\\tajnaslozka");
toolStripStatusLabel1.Text = "Zjišťuji, zda existuje složka nejakajinaslozka...";
ProgressBar1.Value = 30;
}
else
{
}
if (Directory.Exists(slozka + "nejakajinaslozka"))
{
toolStripStatusLabel1.Text = "Přesouvám složku nejakajinaslozka do složky tajnaslozka!";
ProgressBar1.Value = 35;
Directory.Move(slozka + "nejakajinaslozka", slozka + nejakaslozka + "\\nejakajinaslozka");
toolStripStatusLabel1.Text = "Zjišťuji, zda existuje složka dalsislozka...";
ProgressBar1.Value = 40;
}
else
{
}
toolStripStatusLabel1.Text = "";
ProgressBar1.Value = 100;
const string message2 = "Operace byla úspěšně dokončena!";
const string caption2 = "Dokončeno!";
var result2 = MessageBox.Show(message2, caption2,
MessageBoxButtons.OK,
MessageBoxIcon.Information);
ProgressBar1.Value = 0;
}
else if (result == DialogResult.No)
{
ProgressBar1.Value = 100;
const string message1 = "Bohužel nemůžeme vytvořit něco, pokud existuje složka do které se má něco ukládat.";
const string caption1 = "Chyba";
var result1 = MessageBox.Show(message1, caption1,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
ProgressBar1.Value = 0;
}
}
Ty Path.Combine dodělám později, včera (vlastně dneska) se mi už do toho nechtělo.
Že to prostě pořád zjišťuje, ale když nezjistí tak nepokračuje dále. Je to zaseknuté pořád u toho zjišťování.
Jako že se program v tom místě zastaví a stojí? Musíš ten proces pak zabít?
Asi to máš rozbité. Zkusil jsi restartovat?
Ten tvůj kód je tak divně napsaný, že se mi nechce v něm přehrabovat.
Připomíná mi to špagety. Metoda by neměla být delší, než asi 15 řádek, což silně překračuješ. Délka řádku by neměla překročit 80 znaků.
Tak to buď rád, že jsem to tu nedal celé. To by ses asi musel
zbláznit.
Jinak nikdo další neví proč?
Krokuj, psal jsem ti to nahoře, tím zjistíš, na kterým řádku se to zasekne.
Já jsem ... Jo ono to fungovalo od začátku, jen já jsem tam něco
zblbnul. Díky moc za pomoc. Ještě jednou vás budu brzy potřebovat, ale v
jiném příspěvku 
Zobrazeno 26 zpráv z 26.