Miten saan nappulaa painamalla tehtyä pikku skriptin? Siis ajattelin, että jos onnistuisi esim sellainen, että kun painaa nappulaa (Button1) niin se tekisi tämän skriptin pätkän:
del c: *.tmp
del %temp%*.tmp /f
del %windir%prefetch*.*
del %windir%temp*.* /f
del C:documents and settings*local settingstemp*.* /f
Eli tyhjentäisi temp tiedostot. Vai onko mahdollista tuollainen? Lazarus on käytössä.
Kysymys.
7
378
Vastaukset
- Polunkulkija.
Eräs tapa on tehdä se vaikkapa prosessilla! (Käsittääkseni Delphi ei tue prosesseja mutta Lazarus ja FreePascal tukee sitä).
Eli laita lomakkeelle , edit, button ja memo:
Niin alla oleva rutiini ajaa komentorivillä niitä käskyjä mitä olet edittiin kirjoittanut. Memossa näät tekstit joita antamasi käsky kirjoittaisi ruudulle.
Lisää Uses-lauseeseen Process ja luo napin painamiselle tapahtuma
procedure TForm1.Button1Click(Sender: TObject);
var aProcess: TProcess;
begin
aProcess := TProcess.Create(nil);
aProcess.CommandLine := Edit1.Text;
aProcess.Options := AProcess.Options [poWaitOnExit, poUsePipes];
aProcess.Execute;
Memo1.Lines.LoadFromStream(aProcess.Output);
aProcess.Free;
end;
Voit muokata rutiinia esim. niin että kirjoitat haluamasi komennon
merkkijonona Edit1.Textin paikalle. Jos et halua memoa niin poista
Memo1.L... rivi ja aseta aProcess.Options rivi näin:
aProcess.Options := AProcess.Options [poWaitOnExit];- Mika0800
"Käsittääkseni Delphi ei tue prosesseja"
Delphissä ei ole erikseen prosessitukea, mutta Delphi -ohjelmasta voi tehdä windows API -kutsuja.
Näistä prosessien luontiin liittyvät vanhempi WinExec ja uudempi CreateProcess. lisätietoja msdn:stä.
Delphi oma DeleteFile poistaa tiedoston, muttei tue wildcard -merkkejä (*, ?).
ongelman kiertämiseksi 2 keinoa:
1. käsittele wildcard -merkit itse, siis FindFirst, FindNex, FindClose -proseuurien avulla (Delphi help: FindFirst).
2. kierrä ongelma hyödyntämällä windows shelliä:
shFileOperation (lisätiedot: msdn).
tässä tapauksessa myös:
uses
ShellAPI;
kannattaa Delphin helpistä katsioa myös FileExists ja DirectoryExists.
- rraarraarraa
Funktio DeleteFile(tiedoston_nimi) poistaa yhden tiedoston. Paluuarvona tulee true jos poisto onnistui.
- Useampi tiedosto poistuu
Tämä poistaa tietystä kansiosta (jos kansio:='' niin se kansio missä tämä ohjelma on) annetun nimiset tiedostot. Tässä esim. ne joissa on .bak tiedostopääte.
procedure DeleteFiles(KansioJaTiedostonimi: string);
var SearchRec: TSearchRec;
begin
if FindFirst(KansioJaTiedostonimi, faAnyFile, SearchRec) = 0 then
try
repeat
DeleteFile(SearchRec.Name);
until FindNext(SearchRec) 0;
finally
FindCLose(SearchRec);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var kansio,tiedostonimi:string;
begin
kansio :='';
tiedostonimi:= '*.bak' ;
DeleteFiles(kansio tiedostonimi);
end; - Hmmm..?
Mitä tuo nyt siis tekee? Poistaako se temp tiedostot vai mitä?
- 88888888
Hmmm..? kirjoitti:
Mitä tuo nyt siis tekee? Poistaako se temp tiedostot vai mitä?
TProcess-luökalla käynnistetään uusia prosessaja eli
sillä pystynee ajamaan toisia ohjelmia omasta ohjelmasta käsin. - Mika0800
Hmmm..? kirjoitti:
Mitä tuo nyt siis tekee? Poistaako se temp tiedostot vai mitä?
Annettu esimerkki ei sellaisenaan voi toimia oikein!
SearchRec.Filename palauttaa löydetyn tiedostonimen ILMAN polkunimeä.
Järkevämpää olisi välittää proseduurille 2 eri parametrina kansionimi ja tiedostomaski.
Tarvittaessa:
ExtractFilePath
ja ExtractFileDir
ovat hyödyllisiä.
ExtractFilePath: hakemiston loppu - "\" sisältyy paluuarvoon, sensijaan ExtractFileDir:ssä ei sisälly.
Kun esimerkkikoodista korjaa tuon epäkohdan, sen pitäisi toimia.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
S-kaupoissa on nykyään ihanaa käydä
Kun niissä ei enää käy satuolentoihin uskovat hihhuIit eivätkä persut. Asiakaskunta on huomattavasti siistiytynyt muutam24514091Riikka runnoo! Uutta velkaa tänä vuonna 17 mrd. euroa
Tirsk. Nyt kyllä hihityttää kuin pientä eläintä. Riikka takoo maailmanennätyksiä tasaiseen tahtiin. " [Riikka] joutuu607187Jens Ihlen (ex Kukka) poika todistaa oikeudessa
10:49 "Välit ovat olemattomat" Minkälainen isäsi ja sinun välinen suhde on tällä hetkellä? "Minulla ei ole minkäännäkö1996872K-kaupassa on mukava käydä, kun ei tarvitse katsella köyhiä
vasemmistolaisia, joista monet myös varastavat. Mielellään maksaa vähän enemmän tuotteista K-kaupassa, jotka ovat paljon1014749Kela maksoi etuuksia 17,3 mrd. eur, yritykset sai 10,6 mrd.
Tuohon päälle vietiin vielä palkansaajilta työeläkeloisille 27,5 miljardia euroa. Etenkin Suomen Sosialistiset Yrittäjä254728Näin tyhmä vasemmistolainen on: "S-kaupoissa on nykyään ihanaa käydä
kun siellä ei ole hihhuleita eikä persuja." Vain tyhmä eli heikkoälyinen vasemmistolainen voi tehdä noin lapsellisia ju744667Suomeen ei kuulu ihmiset jotka ei halua kätellä toisia ihmisiä, koska tämä on vääräuskoinen
Nainen joka ei halunnut kätellä Stubbia on selvästi ääripään muslimi, eli sitä sakkia josta niitä ongelmia koituu. Ulos744347Suomessa on ollut suurtyöttömyyttä ennenkin, ja lääkäriin pääsee nykyäänkin
Täällähän oli jonkun sekopään(vas.) juttu, että ennen ei ollut työttömyyttä ja lääkäriin pääsi. Siihen alkoi tietysti ko754122Kysymys: Kuinka moneen maahan neuvosto-venäjä on hyökännyt
viimeisten 90-vuoden aikana? Ja lähinnä on siis kyse neuvosto-venäjän naapurimaista - kuten Suomesta. Lista on huomatta1013911- 933711