Diskuze: Odstranění textu - ale i s řádkem
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 27 zpráv z 27.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Respektive prvně vytáhnu string ze souboru - v tom stringu nahradím tu cestu a pak přepíši textový soubor tímto stringem,...
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í.
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í.
Já jsem tam používal Environment.NewLine - tak zkusím prvně to - pak to /r a pak kdyžtak napíšu,...
Jo Environment.NewLine vrací pro každý systém buď \r\n nebo \n podle platformy. Ale neošetříš tím vyjímky.
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,...
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.
http://ulozto.cz/…zM/pinet-zip
Ve formu2 na konci máš malý komentář.
Zkus
string h = this.mainForm.Replace(cesta + Environment.NewLine, "");
Zůstal mi konec cesty kterou jsem chtěl smazat a cesta, se kterou se nic
neděje se znásobila,...
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.
A když to prohodím (zase nazpátek) - tak mi to ukouslo C z další cesty a
s mazanou cestou to udělalo divy,...
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\Emachines\Desktop\Minecrede 1.0 - beta version.exe
C:\Users\Emachines\Desktop\Jan Neruda - Povídky malostranské- by Matěj
Andrle.txt
C:\Users\Emachines\Desktop\OJOsoft Total Video Converter.lnk
C:\Users\Emachines\Desktop\Klavír.exe
C:\Users\Emachines\Desktop\Protokol č. 6.odt
C:\Users\Emachines\Desktop\chalupa.txt
C:\Users\Emachines\Desktop\MagicDisc.lnk
C:\Users\Public\Desktop\Nero StartSmart Essentials.lnk
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á.
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();
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.
Použiješ stávající metodu remove. Nebude tam
if (line != one)
Ale
if (line == one)
strFile += two + Environment.NewLine;
Z tohoto:
C:\Users\Emachines\Desktop\Microsoft-Visual-Studio-2010-Ultimate-V10.0.30319.1.iso
C:\Users\Emachines\Desktop\Bounci star.zip
C:\Users\Emachines\Desktop\Pinet.zip
C:\Users\Emachines\Desktop\Krutá cesta životem v1.1.exe
mi po nahrazení 3. cesty vzniklo toto:
C:\Users\Emachines\Desktop\OJOsoft Total Video Converter.lnk
imate-V10.0.30319.1.iso
C:\Users\Emachines\Desktop\Bounci star.zip
C:\Users\Emachines\Desktop\Pinet.zip
C:\Users\Emachines\Desktop\Krutá cesta životem v1.1.exe
Tu třetí cestu jsem nahradil tímto:
C:\Users\Emachines\Desktop\OJOsoft Total Video Converter.lnk
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.
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.
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\Music\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),...
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,...
Zobrazeno 27 zpráv z 27.