Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Řetězce v Delphi

Zdravím.
Poradte jak na to, kde dělam kopanec.
Mam text soubor, kde jsou pod sebou stovky IP adres.
Potřebuj najit tu co zadam do editu.

for i:=0 to Lines.Count-1 do
begin
    if pos(form2.edit1.text,Lines[i])>0 then Form2.Zapis;
end;

Problem je že když zadam třeba 97.11.44.1 tak mi to vypiše i 97.11.44.171,97.11.44.171,97.11.44.172 atd

Tak jsem to zkusil takto

for i:=0 to Lines.Count-1 do
begin
    if pos(form2.edit1.text,Lines[i])>0 then
    begin
        a:=length(form2.edit1.text)+1;
        znak := copy(a2,a,1);
        if znak <> '' then continue;
        Form2.Zapis;
    end;
end;

Nějak to nefunguje.
I když proměnna znak je 1 až 9 tak if znak <> '' then continue; nereaguje.
Proč.

Předmět Autor Datum
for i:=0 to Lines.Count-1 do begin if form2.edit1.text = Lines[i] then Form2.Zapis; end; nový
Wikan 16.08.2012 07:38
Wikan
To asi nepujde. Na tom řadku neni jen ta IP. Je to soubor s linuxoveho servru a žadky vypadaj takto… nový
Leo11 16.08.2012 08:11
Leo11
Že by SubString od začátku řetězce do první mezery :-) nový
krok 16.08.2012 08:21
krok
Presne tak. for i:=0 to Lines.Count-1 do begin if form2.edit1.text = Copy(Lines[i], 1, Pos(' ', Lin… nový
Jan Fiala 16.08.2012 10:40
Jan Fiala
Tak ani toto mi nefungovalo. Když to otevřu v PsPadu tak to vypada tak jak jsem psal. Když to však k… nový
Leo11 18.08.2012 08:10
Leo11
if form2.edit1.text = Copy(Lines[i], 1, Pos(#9, Lines[i])-1) then Form2.Zapis;… nový
viva 18.08.2012 11:30
viva
Koukni na tohle; procedure TForm1.Button1Click(Sender: TObject); Var I,P:Integer; S:String; A:Array… nový
ERASER 18.08.2012 13:09
ERASER
Tam neni mezera ale #9 bude asi tabulator. Poradite jak na to. To si opravdu neděláš srandu? Je opr… poslední
Jan Fiala 18.08.2012 14:08
Jan Fiala

Koukni na tohle;

procedure TForm1.Button1Click(Sender: TObject);
Var I,P:Integer;
    S:String;
    A:Array of String;
begin
 Memo1.Lines.LoadFromFile('ip.txt');
 S:=Memo1.Lines.Text;
 P:=0;
 SetLength(A,P+1);
 for I:=1 to Length(S) do
  begin
//   if Ord(S[I])=13 then
   if S[I]=#13 then
    begin
      Inc(P);
      SetLength(A,P+1);
      If Copy(A[P-1],0,Pos(' ',A[P-1])-1)=Edit1.Text then
       begin
        Label1.Caption:=A[P-1];
        break;
       end;
    end
   else
//    if Pos(Chr(10),S[I])=0 then A[P]:=A[P]+S[I];
    if Pos(#10,S[I])=0 then A[P]:=A[P]+S[I];
  end;
end;

Soubor 'ip.txt';

97.11.44.1 vasicek #wifi1-plus-64-20480
97.11.44.1 vasicek #wifi2-plus-64-20480
97.11.44.1 vasicek #wifi3-plus-64-20480
97.11.44.1 vasicek #wifi4-plus-64-20480
97.11.44.1 vasicek #wifi5-plus-64-20480
97.11.44.1 vasicek #wifi6-plus-64-20480
97.11.44.1 vasicek #wifi7-plus-64-20480
97.11.44.2 vasicek #wifi8-plus-64-20480
97.11.44.1 vasicek #wifi9-plus-64-20480
97.11.44.1 vasicek #wifi10-plus-64-20480

V 'editu1' mas '97.11.44.2';

Tam neni mezera ale #9 bude asi tabulator. Poradite jak na to.

To si opravdu neděláš srandu? Je opravdu tak velký problém si přečíst 2 řádky kódu a nahradit ve funkci mezerník za znak tabulátoru?
Nezlob se, ale u programován se musí aspoň maličko přemýšlet a ne jen lepit kousky kódu, které někde najdeš.

Zpět do poradny Odpovědět na původní otázku Nahoru