Script v Renameru – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Script v Renameru – Pascal – Fórum – Programujte.comScript v Renameru – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Tomáš Dvořák
~ Anonymní uživatel
4 příspěvky
21. 6. 2010   #1
-
0
-

Ahoj,

potřeboval bych od někoho, kdo má zkušenost s Pascalem, aby mi poradil jak napsat jednoduchou funkci.

Mám program na hromadné přejmenovávání souborů Renamer. Má spoustu užitečných funkcí, nicméně k mojí práci mi tam jedna funkce chybí. Program má na vlastní funkce zakomponované okénko, kam se může napsat funkce pro Pascal, kterou si to potom samo přechroustá.

Potřebuji tedy, jestli by někdo dokázal sem napsat kód pro funkci, která by otočila podle nějakého znaku v textu název souboru. Konkrétně, mám-li např. Mp3 pojmenovanou tak že je nejdříve název písničky a potom teprv autor: "help - beatles", potřebuji napsat funkci, která dokáže jediným kliknutím přejmenovat soubor na "beatles - help". Je to možné? Díky předem za odpovědi.

P.S. pokud tu funcki dokážete dát dohromady, napište mi prosím, ve kterých částech se mění parametry apod. díky!

Nahlásit jako SPAM
IP: 88.103.87.–
Reklama
Reklama
KIIV+42
God of flame
21. 6. 2010   #2
-
0
-

no v perlu bych to dal dohromady za par minut.. na takovy jednoucelovky se ani nevyplati patlat s pascalem

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
liborb
~ Redaktor
+18
Guru
22. 6. 2010   #3
-
0
-

A v C# za několik sekund :smile1: ....

Vždycky je tu přece možnost řešit to "hrubou silou". V prvním průchodu řetězce si najdeš oddělovač - jeho pozici. Následně do výsledného řetězce překopíruješ vše od této pozice + 1 až do konce, pak přídáš oddělovač a pak za to nasmažíš vše od začátku až do pozice oddělovače - 1.

Pokud bude oddělovač taky řetězec (např. " - "), tak je to jen o nalezení pozice oddělovače.

Nahlásit jako SPAM
IP: 85.207.166.–
KIIV+42
God of flame
22. 6. 2010   #4
-
0
-

loborb ja si samozrejme uz z principu davam rezervu.. treba na skrabani na zadku :D

while ( $f = <*.mp3> ) {
if ( $f =~ /^(.*)\s*-\s*(.*)(\.mp3)$/) {
print "move '$f' '$2 - $1$3'\n";
}
}

to by melo teoreticky vygenerovat seznam prikazu pro presunuti.. nechtelo se mi hledat prikazy :)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Mircosoft+1
Věrný člen
24. 6. 2010   #5
-
0
-

-> Tomáš Dvořák : Přesně jak píše Liborb. Otázkou ale je, co všechno ten program podporuje. Podle tvého popisu to tipuju na úplně samostatné prostředí, které má s Pascalem společnou jenom syntaxi, takže tam standardní funkce jednotky System třeba ani nemusí být. Jestli k němu máš nějaký manuál, koukni do něj.

Obvykle se pozice řetězce v jiném řetězci (typ String) hledá funkcí Pos(hledaný řetězec, řetězec k prohledání), délka se určí funkcí Length(řetězec), úsek se vykopíruje funkcí Copy(zdrojový řetězec, počáteční pozice, počet znaků) a spojování se provádí operátorem +. Pak ještě je funkce Delete(řetězec, pozice, počet znaků), která z daného řetězce vykousne pár znaků. Případně se ještě dají přímo číst jednotlivé znaky řetězce, jako by to bylo pole array[1..length(řetězec)] of char.

Ve kterých částech se mění parametry... nevím, co přesně tím myslíš. Jako vstupní parametr té funkci nejspíš předáš původní jméno souboru a možná ještě řetězec, který má sloužit jako oddělovač. Jako výstup (návratovou hodnotu) ti vrátí nové jméno, nic víc tam nebude.

Takže asi takhle:

function otoc(jmeno,oddelovac:string):string;

var po:byte;
Begin
po:=pos(oddelovac,jmeno); {pozice prvniho znaku oddelovace v puvodnim jmenu}
if po=0 then otoc:=jmeno {oddelovac tam neni, neni podle ceho otacet}
else otoc:=copy(jmeno,po+length(oddelovac),255) {cast za oddelovacem (255=vse az do konce jmena)}
+oddelovac
+copy(jmeno,1,po-1); {cast pred oddelovacem}
End;

Volání třeba takhle: novejmeno:=otoc('help - beatles',' - ');

Zkus a uvidíš.

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Tomáš Dvořák
~ Anonymní uživatel
4 příspěvky
26. 6. 2010   #6
-
0
-

Krucinál, myslel jsem, že to bude o něco jednodušší :D

Co se programování týče, jsem naprostý laik, takže většině Vašich vysvětlivek moc nerozumím. Ale Vím že otáčení podle pozice v textu mi neřeší problém, protože potřebuju otáčet stovky názvů naráz, kde samozřejmě znak "-" je pokaždé jinde, zkusím se poprat s tím, co jste výše dávali, snad něco z toho bude fungovat.

Nahlásit jako SPAM
IP: 88.100.83.–
Tomáš Dvořák
~ Anonymní uživatel
4 příspěvky
26. 6. 2010   #7
-
0
-

Mimochodem ReNamer je volně ke stažení, na slunečnici, stahuj.cz, takže kdyby jste chtěli získat lepší obrázek, asi je lepší kouknout tam, než si to nechat vyprávět ode mě ;)

Nahlásit jako SPAM
IP: 88.100.83.–
Tomáš Dvořák
~ Anonymní uživatel
4 příspěvky
26. 6. 2010   #8
-
0
-

V okénku pro vložení je následující:

begin
// type your function here
end.

Nicméně, když zkopíruju kód do onoho místa, plive mi to hlášku "Line 3 syntax error"

Nahlásit jako SPAM
IP: 88.100.83.–
liborb
~ Redaktor
+18
Guru
29. 6. 2010   #9
-
0
-

Ale Vím že otáčení podle pozice v textu mi neřeší problém, protože potřebuju otáčet stovky názvů naráz, kde samozřejmě znak "-" je pokaždé jinde.



Taky všechny ty nápovědy začínaly tím, že pozici toho znaku (skupiny znaků) najdeš v tom daném řetězci před jeho otočením. Pro každý jeden. Pokaždé. Nikoliv najít v prvním a ostatní podle toho.

Nahlásit jako SPAM
IP: 85.207.166.–
Mircosoft+1
Věrný člen
29. 6. 2010   #10
-
0
-

-> Tomáš Dvořák : No jo: syntaxe je podobná Pascalu (begin, end), ale skutečný Pascal to není (Kde je hlavička funkce? Jak to, že je za end tečka a ne středník?).
Na Slunečnici jsem manuál nenašel a stahovat a instalovat ten program rozhodně nehodlám. Google mi na slovo Renamer vyplivl podobných programů tolik, že nevím, který si vybrat.

Když mi ukážeš ten manuál, možná ti budu schopen poradit. Ale takhle těžko, protože netuším, jak se do té funkce mají předat parametry, jak se z ní má dostat výsledek a jestli se tam vůbec dají deklarovat pomocné proměnné.

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

Podobná vlákna

Script — založil papajohn

Script jquery — založil Paja2

FF a tento script? — založil Dominik Franěk

Action Script 3 — založil Majox

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý