Programátorská sociální síť a materiálová základna pro C#, Java, PHP, HTML, CSS, JavaScript a další.


Přihlásit se Registrace  
03.06.2012 19:26:10
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot

Dobrý den,
do textového souboru zapisuji cesty k souborům (pokaždé na nový řádek). V jedné funkci maži jednu z těchto cest. Dělám to pomocí text.Replace(cesta k souboru, "prázdný string"). Problém je, že mi tam zůstane prázdný řádek. Zbavit se řádků umím - ale ostatní musí zůstat žít. :) Tak jak na to jít? Děkuji.


Odpovědět   i++; | i--;
03.06.2012 19:29:44
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Respektive prvně vytáhnu string ze souboru - v tom stringu nahradím tu cestu a pak přepíši textový soubor tímto stringem,...


Odpovědět   i++; | i--;
03.06.2012 20:15:30
Avatar
sczdavos
Moderátor
Skill: Kvantový počítač
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Zkus:

Replace("\ncestaksouboru", "");

Odpovědět   i++; | i--;
Čím více času dostaneš, tím méně ho máš.
03.06.2012 20:25:15
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na sczdavos:

Děkuji - funguje to, ale má to háček. Když to otevřu, vše je OK, ale když spustím program - kde se přečte tento dokument streamreaderem, tak mi to v místě vymazání vyplivne prázdný řádek - který v dokumentu není.


Odpovědět   i++; | i--;
03.06.2012 20:29:01
Avatar
sczdavos
Moderátor
Skill: Kvantový počítač
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Ještě tam dej \r (záleží na kódování) dobrý je si zobrazit netisknutelné znaky v nějakém editoru.
Takže to bude:

Replace("\r\ncesta", "");

V linuxech je totiž jen \n pak je někde asi v macu jen \r a win mají \r\n. Měl by si to nějak hlídat, aby byly tyto varianty ošetřené. Protože když tam bude jen \n tak to nic nenahradí.


Odpovědět   i++; | i--;
Čím více času dostaneš, tím méně ho máš.
03.06.2012 20:31:12
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na sczdavos:

Já jsem tam používal Environment.NewLine - tak zkusím prvně to - pak to /r a pak kdyžtak napíšu,...


Odpovědět   i++; | i--;
03.06.2012 20:36:24
Avatar
sczdavos
Moderátor
Skill: Kvantový počítač
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Jo Environment.NewLine vrací pro každý systém buď \r\n nebo \n podle platformy. Ale neošetříš tím vyjímky.


Odpovědět   i++; | i--;
Čím více času dostaneš, tím méně ho máš.
03.06.2012 20:41:32
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na sczdavos:

Tak ono mi to funguje tak, že mi to nefunguje. :) Totiž sem tam to vynechá jméno z té cesty - vše se smaže kromě části/celého jména. A dokonce 2x mi tam zbylo i kus cesty,... :)


Odpovědět   i++; | i--;
03.06.2012 20:49:51
Avatar
sczdavos
Moderátor
Skill: Kvantový počítač
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Podívej se nejprve na ty netisknutelné znaky. A pošli kus toho zdrojáku.
Možná ještě zkus:

"cesta\r\n", ""

Dát to \r\n na konec.


Odpovědět   i++; | i--;
Čím více času dostaneš, tím méně ho máš.
03.06.2012 20:58:38
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
03.06.2012 21:02:11
Avatar
sczdavos
Moderátor
Skill: Kvantový počítač
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Zkus

string h = this.mainForm.Replace(cesta + Environment.NewLine, "");

Odpovědět   i++; | i--;
Čím více času dostaneš, tím méně ho máš.
03.06.2012 21:10:01
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na sczdavos:

Zůstal mi konec cesty kterou jsem chtěl smazat a cesta, se kterou se nic neděje se znásobila,... :)


Odpovědět   i++; | i--;
03.06.2012 21:12:49
Avatar
sczdavos
Moderátor
Skill: Kvantový počítač
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Můžeš mi ukázat příkladné použití? Ukázku souboru, se kterého se čte a jaká data tedy procházejí přes tu fci co to má udělat a co je výstupem.


Odpovědět   i++; | i--;
Čím více času dostaneš, tím méně ho máš.
03.06.2012 21:13:38
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na sczdavos:

A když to prohodím (zase nazpátek) - tak mi to ukouslo C z další cesty a s mazanou cestou to udělalo divy,... :)


Odpovědět   i++; | i--;
03.06.2012 21:15:31
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na sczdavos:

No máš to v appdata- pokud jsi program zkoušel - vstupem a výstupem jsou jenom cesty k souborům (programům). Třeba:

C:\Users\Emachi­nes\Desktop\Mi­necrede 1.0 - beta version.exe
C:\Users\Emachi­nes\Desktop\Jan Neruda - Povídky malostranské- by Matěj Andrle.txt
C:\Users\Emachi­nes\Desktop\O­JOsoft Total Video Converter.lnk
C:\Users\Emachi­nes\Desktop\Kla­vír.exe
C:\Users\Emachi­nes\Desktop\Pro­tokol č. 6.odt
C:\Users\Emachi­nes\Desktop\cha­lupa.txt
C:\Users\Emachi­nes\Desktop\Ma­gicDisc.lnk
C:\Users\Public\Des­ktop\Nero StartSmart Essentials.lnk


Odpovědět   i++; | i--;
03.06.2012 21:45:43
Avatar
sczdavos
Moderátor
Skill: Kvantový počítač
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Tu metodu Replace sem trošku poupravil:

internal string Remove(string one)
        {
            string strFile = "";
            using (StreamReader sr = new StreamReader(new FileStream(appdata, FileMode.Open)))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    if (line != one)
                        strFile += line + Environment.NewLine;
                }
            }


            return strFile;
        }

Takhle ti nenastane problém s tím řádkováním. Tohle již vrací to co má.


Odpovědět   i++; | i--;
Čím více času dostaneš, tím méně ho máš.
03.06.2012 21:47:39
Avatar
sczdavos
Moderátor
Skill: Kvantový počítač
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

A pak už jenom:

string h = this.mainForm.Remove(cesta);

            using (StreamWriter sw = new StreamWriter(new FileStream(this.mainForm.appdata, FileMode.Create)))
            {
                sw.Write(h);
            }
            this.Close();

Odpovědět   i++; | i--;
Čím více času dostaneš, tím méně ho máš.
03.06.2012 21:56:31
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
03.06.2012 22:16:05
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na sczdavos:

Tak ještě small OT - pro pohodlnost uživatelů sem dal možnost změnit odkaz formu2 - stačí přetáhnout program na form2 a on ihned začne odkazovat na tento program. Jenomže tak tedy mmusím přepsat save.dat - a tam mi zase zůstávají útržky cest + blbne nová řádka - pro zapisování dalších cest:
http://ulozto.cz/…DW/pinet-zip

Děkuji za pomoc.


Odpovědět   i++; | i--;
03.06.2012 22:21:01
Avatar
sczdavos
Moderátor
Skill: Kvantový počítač
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Použiješ stávající metodu remove. Nebude tam

if (line != one)

Ale

if (line == one)
strFile += two + Environment.NewLine;

Odpovědět   i++; | i--;
Čím více času dostaneš, tím méně ho máš.
04.06.2012 05:14:45
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na sczdavos:

Z tohoto:
C:\Users\Emachi­nes\Desktop\Mi­crosoft-Visual-Studio-2010-Ultimate-V10.0.30319.1.iso
C:\Users\Emachi­nes\Desktop\Bou­nci star.zip
C:\Users\Emachi­nes\Desktop\Pi­net.zip
C:\Users\Emachi­nes\Desktop\Kru­tá cesta životem v1.1.exe
mi po nahrazení 3. cesty vzniklo toto:
C:\Users\Emachi­nes\Desktop\O­JOsoft Total Video Converter.lnk
imate-V10.0.30319.1.iso
C:\Users\Emachi­nes\Desktop\Bou­nci star.zip
C:\Users\Emachi­nes\Desktop\Pi­net.zip
C:\Users\Emachi­nes\Desktop\Kru­tá cesta životem v1.1.exe


Odpovědět   i++; | i--;
04.06.2012 05:15:57
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Tu třetí cestu jsem nahradil tímto:
C:\Users\Emachi­nes\Desktop\O­JOsoft Total Video Converter.lnk


Odpovědět   i++; | i--;
04.06.2012 05:16:39
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Nahradil jsem Pinet - který tam očividně je,...


Odpovědět   i++; | i--;
04.06.2012 06:46:36
Avatar
sczdavos
Moderátor
Skill: Kvantový počítač
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Toto nejde?

internal string Replace(string one, string two = null)
{
       string strFile = "";
       using (StreamReader sr = new StreamReader(new FileStream(appdata, FileMode.Open)))
       {
               string line;
               while ((line = sr.ReadLine()) != null)
               {
                       if (line != one)
                               strFile += line + Environment.NewLine;
                       else if (two != null)
                               strFIle += two + Environment.NewLine;
               }
       }


       return strFile;
}

Druhý parametr je nepovinný. Tj. pokud jej nezadáš bude to mazat, pokud zadáš mělo by to replacovat.


Odpovědět   i++; | i--;
Čím více času dostaneš, tím méně ho máš.
04.06.2012 14:36:51
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na sczdavos:

Ještě jsem tam použil StringReader - pro nahrazení textu v textboxu a vše se tváří býti v pořádku. Děkuji za pomoc. :)


Odpovědět   i++; | i--;
06.06.2012 16:33:21
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot

Asi se z toho zcvoknu - měl jsem několik písniček a jednu složku - vše jsem odebral - a mělo se to tedy vymazat - ale ono zbylo:

s\Emachines\Mu­sic\Requim-for-a-dream-soundtrack---requiem-for-a-dream-.mp3
track---requiem-for-a-dream-.mp3
r-a-dream-soundtrack---requiem-for-a-dream-.mp3
track---requiem-for-a-dream-.mp3
ndtrack---requiem-for-a-dream-.mp3
track---requiem-for-a-dream-.mp3

Requiem For A Dream jsem měl jenom jednou(vícekrát to ani nejde),...


Odpovědět   i++; | i--;
06.06.2012 16:37:47
Avatar
matesax
Redaktor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na matesax:

Ono to bude mít souvislost s mým dalším tématem - všechny formy 2 jsou aktivní - v tom vidím problém. Prý by to mělo vyřešit to řešení přes container. Takže prvně zkusím to,...


Odpovědět   i++; | i--;

 

Zobrazeno 27 z 27 zpráv


Přidat novou zprávu

Avatar
Neregistrovaný

Pro výhody se přihlaš. Pokud ještě nemáš účet, zaregistruj se.

Jméno:
E-mail:
Web:

Šťastný Smutný S vyplazeným jazykem Mrkající Smějící se Plačící Cool Nemocný Naštvaný S brýlemi Stydící se On to nebyl Překvapený Hodně překvapený Šokovaný Srdce sdraco
Vložení obrázků Obrázky mohou nahrávat pouze registrovaní uživatelé
Vložení dlouhého zdrojáku Pouze pro registrované

 

Pro ověření prosím zaškrtněte pravdivá tvrzení:
Registrovaní uživatelé se tímto zdržovat nemusí. Zaregistrovat se

Píši zprávu i přesto, že nemá žádný význam
Budu respektovat pravidla
Chci porušovat pravidla
Jsem robot