search program za .txt datoteke

Odpiranje, tiskanje, pisanje v datoteke in drugo.
Defcon
Prispevkov: 35
Pridružen: 08.03.2010 14:07:37

search program za .txt datoteke

Odgovor Napisal/-a Defcon » 08.03.2010 14:19:33

Sem začetnik v Delphiju in mam cilj naredit programcek ki bo naredil slednje:

Program prebere .txt file in izvede search za določeno besedo (ki smo mu jo mi dali) če se nahaja v tem dokumentu.

Če jo najde bi program moral kopirat celo vrstico texta v kateri se je iskana beseda najdla v nov dokument...in ponovit vse dokler ne pregleda celega dokumenta. Vem da je program sila preprosto za napisat samo žal nimam literature (si jo bom kasneje priskrbel) in na internetu tudi nisem dobil nobenih namigov.

Spisal sem na hitro programček ki naj bi bral ..in en ki bi pisal ...sam nimam pojma kako povezat to kar prebere in mu storit naredit zaželjeno :/

Sumim da ima nekaj veze memo1 ...sam nism sigurn :)

Najlepša hvala za kakršnokoli pomoč!

odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

search program za .txt datoteke

Odgovor Napisal/-a odisej » 08.03.2010 14:34:16

Daš recimo na formo dva memota. Pa OpenDialog in SaveDialog. Pa en gumb, ki bo odprl fajl v memo1. Pa drug gumb, ki bo preiskal memo1 in dal rezultate v memo2. Pa tretji gumb, ki bo rezultate shranil v nov fajl. Koda približno:

Koda: Izberi vse

procedure TForm.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;

procedure TForm.Button2Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to Memo1.LInes.Count - 1 do
    if Pos('beseda', Memo1.Lines[i]) > 0 then
      Memo2.Lines.Add(Memo1.Lines[i]);
end;

procedure TForm.Button3Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
    Memo1.Lines.SaveToFile(saveDialog1.FileName);
end;

Defcon
Prispevkov: 35
Pridružen: 08.03.2010 14:07:37

search program za .txt datoteke

Odgovor Napisal/-a Defcon » 08.03.2010 15:06:08

Hvala za tako hiter odgovor ! :)

Zanimivo...kar preprosta uporaba memo-ta ...sicer mislim da manjka uporaba TEdita za iskano besedo ? Sicer Open in Save dela :)

Še malo moram prečesat kodo (moj poskus je bil z assign file in ReadLn ...sam nism uspel povezat vsega)

Hvala!

Defcon
Prispevkov: 35
Pridružen: 08.03.2010 14:07:37

search program za .txt datoteke

Odgovor Napisal/-a Defcon » 08.03.2010 15:25:14

Dodal TEdit in malo preizkušal na par file-ih in dela....sam ne dela prav :)

V Memo ne shrani 1 vrstice kot 1 vrstico ampak jih shranjuje navpično (1 vrstica v Memotu ima 3 beseda nemsto pač neskončno kot jih ima .txt file)

kako popravim to napako ?

Defcon
Prispevkov: 35
Pridružen: 08.03.2010 14:07:37

search program za .txt datoteke

Odgovor Napisal/-a Defcon » 08.03.2010 15:35:48

Dodal TEdit in malo preizkušal na par file-ih in dela....sam ne dela prav :)

V Memo ne shrani 1 vrstice kot 1 vrstico ampak jih shranjuje navpično (1 vrstica v Memotu ima 3 beseda nemsto pač neskončno kot jih ima .txt file)

kako popravim to napako ?
Hmm nekako bi rad implemental scroll bar Memotu da bi ta lahko pravilno prikazoval text / vrstice enako kot so v notepadu ....vprašanje kako to storim :D ?

Hvala!

Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

search program za .txt datoteke

Odgovor Napisal/-a Runner » 08.03.2010 20:41:44

Wordwrap pri Memo-tu daj na false.

Stupa
Prispevkov: 44
Pridružen: 20.10.2003 21:17:37

search program za .txt datoteke

Odgovor Napisal/-a Stupa » 08.03.2010 22:11:45

ScrollBars postavi na ssVertical

Defcon
Prispevkov: 35
Pridružen: 08.03.2010 14:07:37

search program za .txt datoteke

Odgovor Napisal/-a Defcon » 09.03.2010 08:38:17

Wordwrap pri Memo-tu daj na false.
Super...to je popravilo!

Zanima me zdej kako popravit oz ustvarit loop v searchu da izvede dokler ne pride do konca dokumenta...(za zdaj se ustavi pri prvem hitu)

Koda: Izberi vse

var
  i: Integer;
begin
  for i := 0 to Memo1.Lines.Count - 1 do
    if Pos(Input1.Text, Memo1.Lines[i]) > 0 then
      Memo2.Lines.Add(Memo1.Lines[i]);

end;
  
mislil sem dopolnit kodo in dodat 1 var in sicer da bi gledalo na to ali se je pozicija besede že pojavila.... ali obstaja lažji način ?

Defcon
Prispevkov: 35
Pridružen: 08.03.2010 14:07:37

search program za .txt datoteke

Odgovor Napisal/-a Defcon » 09.03.2010 09:01:54

Wordwrap pri Memo-tu daj na false.
Super...to je popravilo!

Zanima me zdej kako popravit oz ustvarit loop v searchu da izvede dokler ne pride do konca dokumenta...(za zdaj se ustavi pri prvem hitu)

Koda: Izberi vse

var
  i: Integer;
begin
  for i := 0 to Memo1.Lines.Count - 1 do
    if Pos(Input1.Text, Memo1.Lines[i]) > 0 then
      Memo2.Lines.Add(Memo1.Lines[i]);

end;
  
mislil sem dopolnit kodo in dodat 1 var in sicer da bi gledalo na to ali se je pozicija besede že pojavila.... ali obstaja lažji način ?
Se opravičujem, sem se zamotil pri kodi (del vse prow :P )

koda zgleda pa zdaj tako :

Koda: Izberi vse

 
unit Search;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    OpenFile: TButton;
    SearchFile: TButton;
    SaveFile: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Input1: TEdit;
    Label1: TLabel;
    procedure OpenFileClick(Sender: TObject);
    procedure SearchFileClick(Sender: TObject);
    procedure SaveFileClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.OpenFileClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
    Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;


procedure TForm1.SearchFileClick(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to Memo1.Lines.Count - 1  do
    if Pos(Input1.Text, Memo1.Lines[i]) > 0
      then
      Memo2.Lines.Add(Memo1.Lines[i]);

end;

procedure TForm1.SaveFileClick(Sender: TObject);
begin
  if SaveDialog1.Execute then
    Memo1.Lines.SaveToFile(saveDialog1.FileName);
end;

end.
 
Lep pozdrav in hvala!

Defcon
Prispevkov: 35
Pridružen: 08.03.2010 14:07:37

search program za .txt datoteke

Odgovor Napisal/-a Defcon » 11.03.2010 10:20:55

Imam še en majhn problemček....a kdo ve če je možno highlightat besedo v Memotu ? Sem prebrskal po netu samo nism lih našel kaj primernega....prej RichEdit kot memo...

Odgovori