Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Delphi] Porównanie zawartości TEdit i zmiennej.

25 Lis 2010 21:40 2828 22
  • Poziom 13  
    Witam, Zaczynam programować w delphi i mam pytanie jak sprawdzić czy tekst wpisany w edit1 znajduje się w zmiennej znaki zdeklarowanej jako string?
  • Poziom 42  
    Porównaj własność Text tego obiektu ze zmienną przy użyciu funkcji if..then i operatora porównania =. Jeśli chcesz wyśledzić, czy tekst znajduje się gdzieś w środku zmiennej (czyli jest jej częścią) - skorzystaj z funkcji Pos.
  • Poziom 13  
    Code:
    if edit1 = znaki then 
    ?
    W zmiennej jest zapisane wiele szyków znaków

    w formie

    xxxxxxxxx
    zzzzzzzzz
    yyyyyyyy

    itd.

    Ma to sprawdzić obojętnie które hasło pasuje, jeżeli jakiś szyk jest w zmiennej. Bo do zmiennej wczytuje plik txt.
  • Poziom 42  
    Własność text!

    Jeśli chcesz tylko zwieranie się sprawdzić, to tak jak pisałem:
    Code:
    If Pos(edit1.text,' '+znaki)>0 then
    
       Application.MessageBox('Znaleziono!','');
  • Poziom 27  
    Wild_Master_Airborne napisał:
    W zmiennej jest zapisane wiele szyków znaków

    w formie

    xxxxxxxxx
    zzzzzzzzz
    yyyyyyyy
    W takim razie dużo lepszym miejscem na przechowywanie "szyków" będzie tablica albo klasa tstrigs.
  • Moderator Programowanie
    Do autora tematu :
    Proszę dokładnie opisać, co chce kolega osiągnąć. Na podstawie tego, dość skąpego opisu, trudno jest wybrać jakąś rozsądną drogę postępowania.

    @Dżyszla:
    Trochę mnie to zastanawia, więc się zapytam : do czego ma służyć ta dodatkowa spacja w tym kodzie ?
    Code:
    If Pos(edit1.text,' '+znaki)>0 then 
  • Poziom 13  
    Chodzi o to, pobieram plik txt ze strony wpisuje go do zmiennej znaki, I chcę sprawdzić czy któryś z loginów został wpisany do edit1
    loginy są zapisne w txt tak
    xxxxxxx
    xxxxxxx
    xxxxxxx
    xxxxxxx
    itd...
  • Poziom 42  
    @arnoldzik - faktycznie, przesadziłem... nawyk związany z pewnym innym zgadnieniem.

    @Wild... W takim razie należy rozwiązać to zupełnie inaczej. Wczytaj tekst do obiektu tylko TStringList (LoadFromFile), następnie tworzysz pętlę:
    Code:

    znaleziono:=false;
    for i:=0 to StringList.Count-1 do
       if StringList[i]=edit1.Text then begin
           znaleziono:=true;
           break;
       end;
  • Poziom 13  
    Nie zbyt mi to działa, możesz pokazać cały przykład?
    Code:
    var
    
      znaki : String;
      SynHttp : THttpSend;

    begin
      SynHttp := THttpSend.Create;
      SynHttp.UserAgent := prze_UserAgent;
      SynHttp.HTTPMethod('GET', 'adres strony');
      SetLength(znaki,SynHttp.Document.Size);
      SynHttp.Document.Read(Pointer(znaki)^, Length(znaki));
      SynHttp.Free;

  • Poziom 42  
    A to jakiś nietypowy masz odczyt danych. Jeśli już tak robisz, to przepisz zmienną znaki do własności Text obiektu klasy TStringList.
  • Poziom 13  
    Jak to zrobić? a dokładnie własność obiektu klasy Tstringlist?
  • Poziom 42  
    http://zelota.netshock.pl/lazarus/Lazarus02.pdf (własności to to samo, co właściwości lub pola)
    Jeśli terminologia jest niezrozumiała, to polecam naprawdę zapoznać się z jakimiś podstawami programowania obiektowego - będzie łatwiej zrozumieć, co inni piszą.
  • Poziom 13  
    Nie no znam, Próbowałem i nadal nie mogę tego zrobić nie działa no =( Możesz Napisać ten Warunek?
    Aha i Jeszcze jeden Problem
    Jak zrobić Jeśli login się nie zgadza to wyświetli komunikat
    Procedura loginu
    If .....
    else
    Panel1.Color := clRed;
    Panel1.Caption:='Incorrect Login';
    Procedura hasla
    if .....
    else
    Panel1.Color := clRed;
    Panel1.Caption:='Incorrect Password';


    Ale tak chyba działac nie bedzie w takiej formie?
  • Poziom 42  
    Wild_Master_Airborne napisał:
    Nie no znam, Próbowałem i nadal nie mogę tego zrobić nie działa no =( Możesz Napisać ten Warunek?

    Dżyszla napisał:
    @Wild... W takim razie należy rozwiązać to zupełnie inaczej. Wczytaj tekst do obiektu tylko TStringList (LoadFromFile), następnie tworzysz pętlę:
    Code:

    znaleziono:=false;
    for i:=0 to StringList.Count-1 do
       if StringList[i]=edit1.Text then begin
           znaleziono:=true;
           break;
       end;
  • Poziom 13  
    Nie wiem jak wczytać z zmiennej do stringlist?
    Stringlist.items.loadfromfile(znaki); tak nie działa bo w nawias wstawia sie lokalizacje pliku
  • Poziom 42  
    Należy napisać TStringList i nacisnąć F1!
  • Poziom 13  
    Dokument pomocy wiele nie wniósł.

    Dodano po 6 [minuty]:

    Do tego trzeba użyć LoadFromStream
    Stringlist.items.LoadFromStream(Stream: TStream); virtual;
    lecz to nie działa błąd na StringList
  • Poziom 28  
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    
    var
      Lista: TStrings;
      Petla: integer;
      Jest: boolean;
    begin
      Lista:=TStringList.Create;
      try
        with Lista do
        begin
          LoadFromFile('c:\test.txt');
          Jest:=False;
          for Petla:=0 to Count-1 do
            if Pos(Edit1.Text,Lista[Petla])>0 then
            begin
              Jest:=True;
              Break;
            end;
        end;
      except
      end;
      FreeAndNil(Lista);
    end;
  • Poziom 13  
    W tym sęk ze te pliki nie mają byc zapisywane na dysku tylko w pamięci, po zamknięciu znikną

    Dodano po 27 [minuty]:

    Może mi ktoś napisać ten warunek na sprawdzenie czy zawartość Edit1. znajduje się w zmiennej znaki-string
  • Poziom 28  
    Masz przed nosem a nie umiesz znaleźć. Połamiesz ręce i nogi na tym Delphi. :)

    Code:
    if Pos(Edit1.Text,Znaki)>0 then
    
    begin
       //[...]
    end;
  • Poziom 13  
    Nie Pisałbym gdyby to działało. Ten Warunek Crashuje program, wyskakuje mi debuger
  • Poziom 42  
    Skąd masz ten kod w poście z 26 Lis 2010 18:46:06 ? Komponentu nie znam, ale może źle jest wykorzystywany? Sposób zapisu do zmiennej nasuwa skojarzenia z typem PChar a nie String...
  • Poziom 13  
    Dobra, Zrobiłem to zupełnie inaczej za pomocą tablic i jest wszystko ok, mimo to dzięki za chęci pomocy =) temat do zamkięcia