проверить последний символ

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by SultanOFF, 5 Dec 2009.

  1. SultanOFF

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    155
    Likes Received:
    6
    Reputations:
    0
    Здравствуйте. Вопрос возможно туп до идиотизма но все же. В едите есть текст, и нужно проверить стоит ли на самом конце знак "\" и если его нету то вставить иначе сделать тото.
    Ума не приложу как это сделать, помогите пожалуйста :) Delphi 2009
     
  2. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    s:string;
    Begin
    s := form1.Edit1.Text;
    If not (pos('\',s) = length(s)) then s:= s+'\';
    form1.Edit2.Text := s;
    end;
    
     
    #2 НTL, 5 Dec 2009
    Last edited: 5 Dec 2009
  3. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    идиотизм

    ну вот мой код:
    to slesh, ^_^
     
  4. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    s := edit1.text;
    if (s[length] <> '\') then edit1.text := edit1.text + '\';
     
  5. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Каждый исходный код уникален (с) Xakep
     
    #5 НTL, 5 Dec 2009
    Last edited: 5 Dec 2009
  6. SultanOFF

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    155
    Likes Received:
    6
    Reputations:
    0
    чуточку посидев сам в принципе придумал решение:
    Code:
     if copy(edit1.Text, length(edit1.Text), 1)='\' then
     showmessage('okei')
     else
     edit1.Text:=edit1.Text+'\';
    однако думаю лучше использовать код slesh. Всем большое спасибо :)
     
  7. DeaD_MoroZ

    DeaD_MoroZ Banned

    Joined:
    3 Nov 2009
    Messages:
    102
    Likes Received:
    7
    Reputations:
    0
    s[length] - вот эта ф-я получает последний символ в строке
     
  8. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 НTL
    Но не каждый исходный код имеет право на жизнь (С) SLESH

    Твой код завалится на строке типа C:\dir\ подумай над этим )
     
  9. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Да ты прав :rolleyes:
     
  10. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32

    А нельзя сразу написать
    if (edit1.text[length[edit1.text]] <> '\') then edit1.text := edit1.text + '\';
    ?
     
  11. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    M_script_ edit1.text - это не переменная, это метод. Который в одном случае возвращает строку, в другом записывает её. И по этому нужно юзать промежуточную переменную.
     
  12. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0
    Ну ты завернул :D :D
     
  13. DeaD_MoroZ

    DeaD_MoroZ Banned

    Joined:
    3 Nov 2009
    Messages:
    102
    Likes Received:
    7
    Reputations:
    0
    можно только вот так
    if (edit1.text=[length[edit1.text]] <> '\') then edit1.text := edit1.text + '\';
    но тогда надо предварительно чо то записать в едит1
     
  14. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Можно, но код будет некоторым не приятно воспринимать (по виду), впрочем кому как нравиться - тот так и пишет (да кстати так правильнее будет если смотреть на твой пример:...length(edit1.text)...)
     
    #14 wolmer, 11 Dec 2009
    Last edited: 11 Dec 2009
  15. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Я в делфи не работаю, только в билдере, но VCL все равно один и тот же, поэтому не совсем понятно, с каких пор свойство Text класса TEdit стало методом? :confused:

    На билдере код выглядит так:
    Code:
    if(Edit1->Text[Edit1->Text.Length()] != '\\') 
    	Edit1->Text = Edit1->Text + '\\';
    
     
  16. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0
    А код с названиями типа "edit1" по любому неприятно воспринимать :)
    Не говоря уж про то, что функционал программы нельзя смешивать с интерфейсом...