Kysymys.

Hmmm..?

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ä.

7

311

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. 176
      5259
    2. Katso: Ohhoh! Miina Äkkijyrkkä sai käskyn lähteä pois Farmi-kuvauksista -Kommentoi asiaa: "En ole.."

      Tämä oli shokkiyllätys. Oliko tässä kyse tosiaan siitä, että Äkkijyrkkä sanoi asioita suoraan vai mistä.... Tsemppiä, Mi
      Tv-sarjat
      128
      4715
    3. Voi kun mies rapsuttaisit mua sieltä

      Saisit myös sormiisi ihanan tuoksukasta rakkauden mahlaa.👄
      Ikävä
      30
      3006
    4. Kyllä poisto toimii

      Esitin illan suussa kysymyksen, joka koska palstalla riehuvaa häirikköä ja tiedustelin, eikö sitä saa julistettua pannaa
      80 plus
      30
      1961
    5. "Joka miekkaan tarttuu, se siihen hukkuu"..

      "Joka miekkaan tarttuu, se siihen hukkuu".. Näin puhui jo aikoinaan Jeesus, kun yksi hänen opetuslapsistaan löi miekalla
      Yhteiskunta
      23
      1804
    6. Haluan jutella kanssasi Nainen

      Olisiko jo aika tavata ja avata tunteemme...On niin paljon asioita joihin molemmat ehkä haluaisimme saada vastaukset...O
      Ikävä
      16
      1757
    7. Hermo mennyt sotealueeseen?

      Nyt hammaslääkäriaika peruttiin neljännen kerran. Perumiset alkoi tammikuussa. Nyt uusi aika elokuulle!????
      70 plus
      110
      1744
    8. Poliisiauto Omasp:n edessä parkissa

      Poliisiauto oli parkissa monta tuntia Seinäjoen konttorin edessä tänään. Haettiinko joku tai jotain pankista tutkittavak
      Seinäjoki
      22
      1730
    9. Haluan tavata Sinut Rakkaani.

      Olen valmis Kaikkeen kanssasi...Tulisitko vastaa Rakkaani...Olen todella valmistautunut tulevaan ja miettinyt tulevaisuu
      Ikävä
      30
      1643
    10. Onko mies niin,

      että sinulle ei riitä yksi nainen? Minulle suhde tarkoittaa sitoutumista, tosin eihän se vankila saa olla kummallekaan.
      Tunteet
      18
      1571
    Aihe