Etsi toiminto

Eli sain nyt lazaruksella toimimaan ohjelman joka ettii yhen tietyn tiedoston koneelta.... Miten saisin ohjelman toimimaan niin että kirjottaisit yhteen kohtaan hakusanan ja painat etsi niin sitte toiseen laatikkoon tulisi se mitä se löysi?

Tämän hetkinen koodi on tässä:

procedure TForm1.Button1Click(Sender: TObject);
var
myFile : TextFile;
fileName : string;
fullFilePath : string;
dir1, dir2 : string;
begin
fileName := '';
AssignFile(myFile, 'C:\Program Files\' fileName);
ReWrite(myFile);
Write(myFile, 'Hello World');
CloseFile(myFile);
dir1 := 'C:\No such directory';
dir2 := 'C:\Program Files\';
fullFilePath := FileSearch(fileName, dir1 ';' dir2);
if fullFilePath = '' then
ShowMessage(fileName ' not found')
else ShowMessage(fullFilePath ' found OK');
DeleteFile(fileName);
fullFilePath := FileSearch(fileName, dir1 ';' dir2);
end;
6422
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

Lomakkeella on kolme komponenttia
- Button1
- Edit1
- ListBox1


Edit1 on tieto millaisia tiedostoja haetaan.
Jos on *.* niin haetaan ohjelmanoletuskansiosta.
Mukaan voidaan laittaa myös hakupolku.

Tulostetaan kaikki hakuehdon mukaiset tiedostot ListBox1:n


procedure TForm1.Button1Click(Sender: TObject);
var searchResult : TSearchRec;
etsittava_nimi:string;
begin
etsittava_nimi := Edit1.text;
if FindFirst(etsittava_nimi, faAnyFile, searchResult) = 0 then
begin
repeat
ListBox1.Items.Add(searchResult.Name);
until FindNext(searchResult) 0;
FindClose(searchResult);
end;
end;



PS. Huomaa että halutessasi voit jatkojalostaa tätä esim. Simon ohjeilla (katso aiempia Delphi-alueen viestejä)!

Äänestä
  • ku ei toimi? Kirjoitan nimen edit1 ja painan hae niin mitään ei tapahdu?

    Koodi:

    procedure TForm1.Button1Click(Sender: TObject);
    var searchResult : TSearchRec;
    etsittava_nimi:string;
    begin
    etsittava_nimi := Edit1.text;
    if FindFirst(etsittava_nimi, faAnyFile, searchResult) = 0 then
    begin
    repeat
    ListBox1.Items.Add(searchResult.Name);
    until FindNext(searchResult) 0;
    FindClose(searchResult);
    end;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    Close;
    end;

    Äänestä

  • on... kirjoitti:

    ku ei toimi? Kirjoitan nimen edit1 ja painan hae niin mitään ei tapahdu?

    Koodi:

    procedure TForm1.Button1Click(Sender: TObject);
    var searchResult : TSearchRec;
    etsittava_nimi:string;
    begin
    etsittava_nimi := Edit1.text;
    if FindFirst(etsittava_nimi, faAnyFile, searchResult) = 0 then
    begin
    repeat
    ListBox1.Items.Add(searchResult.Name);
    until FindNext(searchResult) 0;
    FindClose(searchResult);
    end;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    Close;
    end;

    Kokeilitko kirjoittaa tuohon tekstikenttään (edit)
    esim. *.* jolloin pitäisi löytyä kansion kaikki tiedostot?


    PS Laita myös luokan esittely meille näkyviin jos tuokaan ei ole syynä.

    Äänestä

  • ListBoxin ehkäpä voisi tyhjentää ensimmäisenä toimintona painonapin painamistoiminnassa (tuskin tarkoituksena on kerätä isoa listaa.
    Ero tulee esille jos nappia painaa kaksi kertaa)

    eli

    ...
    begin
    ListBox1.Items.Clear;
    etsittava_nimi := Edit1.text;
    ...

    Äänestä

  • Nollaus kirjoitti:

    ListBoxin ehkäpä voisi tyhjentää ensimmäisenä toimintona painonapin painamistoiminnassa (tuskin tarkoituksena on kerätä isoa listaa.
    Ero tulee esille jos nappia painaa kaksi kertaa)

    eli

    ...
    begin
    ListBox1.Items.Clear;
    etsittava_nimi := Edit1.text;
    ...

    kyllä toi *.* löysi tiedostoja, mutta saisko ton toimimaan sillein et kirjotat vaikkapa ''Windows mediplayer'' Ja sitte se näyttäis missä se on?

    Äänestä

  • Apuja? kirjoitti:

    kyllä toi *.* löysi tiedostoja, mutta saisko ton toimimaan sillein et kirjotat vaikkapa ''Windows mediplayer'' Ja sitte se näyttäis missä se on?

    Tarkoitatko samanlaista ominaisuutta kuin
    Lazaruksen "Etsi tiedostoista" / find in files on ?

    Siinähän on haluttaessa mukana myös säännölliset lausekkeet (Regular expression)

    Äänestä

Kommentoi aloitusta


Apuja? kirjoitti:

Eli sain nyt lazaruksella toimimaan ohjelman joka ettii yhen tietyn tiedoston koneelta.... Miten saisin ohjelman toimimaan niin että kirjottaisit yhteen kohtaan hakusanan ja painat etsi niin sitte toiseen laatikkoon tulisi se mitä se löysi?

Tämän hetkinen koodi on tässä:

procedure TForm1.Button1Click(Sender: TObject);
var
myFile : TextFile;
fileName : string;
fullFilePath : string;
dir1, dir2 : string;
begin
fileName := '';
AssignFile(myFile, 'C:\Program Files\' fileName);
ReWrite(myFile);
Write(myFile, 'Hello World');
CloseFile(myFile);
dir1 := 'C:\No such directory';
dir2 := 'C:\Program Files\';
fullFilePath := FileSearch(fileName, dir1 ';' dir2);
if fullFilePath = '' then
ShowMessage(fileName ' not found')
else ShowMessage(fullFilePath ' found OK');
DeleteFile(fileName);
fullFilePath := FileSearch(fileName, dir1 ';' dir2);
end;

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu