PDA

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


SultanOFF
05.12.2009, 21:13
Здравствуйте. Вопрос возможно туп до идиотизма но все же. В едите есть текст, и нужно проверить стоит ли на самом конце знак "\" и если его нету то вставить иначе сделать тото.
Ума не приложу как это сделать, помогите пожалуйста :) Delphi 2009

НTL
05.12.2009, 21:24
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;

wolmer
05.12.2009, 21:28
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, ^_^

slesh
05.12.2009, 21:29
s := edit1.text;
if (s[length[s]] <> '\') then edit1.text := edit1.text + '\';

НTL
05.12.2009, 21:32
идиотизм

ну вот мой код:

Каждый исходный код уникален (с) 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]] - вот эта ф-я получает последний символ в строке

slesh
07.12.2009, 11:27
2 НTL

Каждый исходный код уникален (с) Xakep


Но не каждый исходный код имеет право на жизнь (С) SLESH

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

НTL
08.12.2009, 17:39
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 + '\';
?

slesh
11.12.2009, 10:27
M_script_ edit1.text - это не переменная, это метод. Который в одном случае возвращает строку, в другом записывает её. И по этому нужно юзать промежуточную переменную.

Algol
11.12.2009, 16:10
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

wolmer
11.12.2009, 17:14
А нельзя сразу написать
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 + '\\';

Algol
12.12.2009, 03:06
Можно, но код будет некоторым не приятно воспринимать (по виду)
А код с названиями типа "edit1" по любому неприятно воспринимать :)
Не говоря уж про то, что функционал программы нельзя смешивать с интерфейсом...