Просмотр полной версии : проверить последний символ
SultanOFF
05.12.2009, 21:13
Здравствуйте. Вопрос возможно туп до идиотизма но все же. В едите есть текст, и нужно проверить стоит ли на самом конце знак "\" и если его нету то вставить иначе сделать тото.
Ума не приложу как это сделать, помогите пожалуйста :) Delphi 2009
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;
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;
идиотизм
ну вот мой код:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
Begin
s := form1.Edit1.Text;
If (s[length(s)]<>'\') then s:= s+'\';
form1.Edit1.Text := s;
end;
to slesh, ^_^
s := edit1.text;
if (s[length[s]] <> '\') then edit1.text := edit1.text + '\';
идиотизм
ну вот мой код:
Каждый исходный код уникален (с) Xakep
SultanOFF
05.12.2009, 21:40
чуточку посидев сам в принципе придумал решение:
if copy(edit1.Text, length(edit1.Text), 1)='\' then
showmessage('okei')
else
edit1.Text:=edit1.Text+'\';
однако думаю лучше использовать код slesh. Всем большое спасибо :)
DeaD_MoroZ
07.12.2009, 10:40
s[length[s]] - вот эта ф-я получает последний символ в строке
2 НTL
Каждый исходный код уникален (с) Xakep
Но не каждый исходный код имеет право на жизнь (С) SLESH
Твой код завалится на строке типа C:\dir\ подумай над этим )
2 НTL
Но не каждый исходный код имеет право на жизнь (С) SLESH
Твой код завалится на строке типа C:\dir\ подумай над этим )
Да ты прав :rolleyes:
M_script_
11.12.2009, 06:03
s := edit1.text;
if (s[length[s]] <> '\') then edit1.text := edit1.text + '\';
А нельзя сразу написать
if (edit1.text[length[edit1.text]] <> '\') then edit1.text := edit1.text + '\';
?
M_script_ edit1.text - это не переменная, это метод. Который в одном случае возвращает строку, в другом записывает её. И по этому нужно юзать промежуточную переменную.
M_script_ edit1.text - это не переменная, это метод. Который в одном случае возвращает строку, в другом записывает её. И по этому нужно юзать промежуточную переменную.
Ну ты завернул :D :D
DeaD_MoroZ
11.12.2009, 17:09
А нельзя сразу написать
if (edit1.text[length[edit1.text]] <> '\') then edit1.text := edit1.text + '\';
?
можно только вот так
if (edit1.text=[length[edit1.text]] <> '\') then edit1.text := edit1.text + '\';
но тогда надо предварительно чо то записать в едит1
А нельзя сразу написать
if (edit1.text[length[edit1.text]] <> '\') then edit1.text := edit1.text + '\';
?
Можно, но код будет некоторым не приятно воспринимать (по виду), впрочем кому как нравиться - тот так и пишет (да кстати так правильнее будет если смотреть на твой пример:...length(edit1.text)...)
M_script_
12.12.2009, 00:57
M_script_ edit1.text - это не переменная, это метод. Который в одном случае возвращает строку, в другом записывает её. И по этому нужно юзать промежуточную переменную.
Я в делфи не работаю, только в билдере, но VCL все равно один и тот же, поэтому не совсем понятно, с каких пор свойство Text класса TEdit стало методом? :confused:
На билдере код выглядит так:
if(Edit1->Text[Edit1->Text.Length()] != '\\')
Edit1->Text = Edit1->Text + '\\';
Можно, но код будет некоторым не приятно воспринимать (по виду)
А код с названиями типа "edit1" по любому неприятно воспринимать :)
Не говоря уж про то, что функционал программы нельзя смешивать с интерфейсом...
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot