logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[delphi] [Delphi] Jak wyodrębnić cyfry z ciągu znaków w Edit1 do Edit2?

Manfred48 13 Sty 2010 20:43 1974 4
REKLAMA
  • #1 7531239
    Manfred48
    Poziom 17  
    Posty: 299
    Pomógł: 11
    Ocena: 31
    Cześć.

    Mam mały problem w pisaniu programu. Przykładowo mam na formie dwa komponenty Edit1 i Edit2 oraz przycisk Button1. Do komponentu Edit1 pobierane są dane z zewnątrz (plik, serwer), które mają postać ciągu różnych znaków np. abcdefghijk123456lmno+-&$^%#(@pqrstuwxyz. Chciałbym aby po wciśnięciu Button1 w Edit2 pojawiły się TYLKO CYFRY z ciągu znaków zawartego w Edit1. Nie mam doświadczenia w programowaniu wiec proszę o wyrozumiałość.

    Z góry dziękuję za pomoc.
  • REKLAMA
  • Pomocny post
    #2 7532285
    Ciapol
    Poziom 25  
    Posty: 707
    Pomógł: 52
    Ocena: 33
    Najprostszy a zarazem edukacyjny sposb to napisanie w pętli for kopiowania znaku do Edit2 jeśli "badany" znak w edit1>=30 lub edit1<=39. Oczywiście jeżeli będziesz potrzebował pseudokodu to mogę napisać, ale myślę, że powinno Ci to wystarczyć. 30 i 39 to dziesiętne wartości znaków numerycznych z tablicy ASCII.
  • REKLAMA
  • Pomocny post
    #3 7532730
    Szymon Tarnowski
    Poziom 27  
    Posty: 1292
    Pomógł: 61
    Ocena: 181
    Ciapol napisał:
    Najprostszy a zarazem edukacyjny sposb to napisanie w pętli for kopiowania znaku do Edit2 jeśli "badany" znak w edit1>=30 lub edit1<=39.
    Żeby było bardziej "wysokopoziomowo" to można użyć zestawu znaków (set of char = '0'..'9') i później przetestować w pętli 'if xxx is in zestaw'. Niby to samo ale opis bardziej abstrakcyjny.
  • REKLAMA
  • Pomocny post
    #4 7533360
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    procedure TForm1.Button1Click(Sender: TObject);
    var x : word;
    begin
    Edit2.text:='';
    if length(Edit1.text)>0 then
     for x:=1 to length(Edit1.text) do
       if Edit1.Text[x] in ['0','1','2','3','4','5','6','7','8','9'] then
          Edit2.text:=Edit2.text+Edit1.Text[x];
    end;
  • #5 7543904
    Manfred48
    Poziom 17  
    Posty: 299
    Pomógł: 11
    Ocena: 31
    Dziękuję za odpowiedzi, każda z nich bardzo mi pomogła i oczywiście ta część kodu programu jest gotowa i działa.

    Pozdrawiam
REKLAMA