Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.13;
Скачать: CL | DM;

Вниз

Удалить символ из поля   Найти похожие ветки 

 
Sapan ©   (2007-04-19 22:17) [0]

Можно ли удалить символ из поля edit напрямую без использования переменных? Если можно то как?


 
Jeer ©   (2007-04-19 22:24) [1]

Я те поведаю страшную тайну - TEdit.Text тоже переменная типа string.
Поэтому, научившись удалять чего-либо из string - сможешь и из TEdit.Text


 
Sapan ©   (2007-04-19 22:34) [2]

Использую процедуру delete(Edit1.text,4,3) но он пишет ошибку "Constant object cannot be passed as var parameter"


 
palva ©   (2007-04-19 22:38) [3]

TEdit.Text это не переменная а свойство. У свойства нет адреса, поэтому свойство не может выступать var параметром функции Delete. В этом трудность.


 
Kolan ©   (2007-04-19 22:38) [4]

> без использования переменных?

А что задали без доп. переменных?


 
palva ©   (2007-04-19 22:41) [5]

Вот так можно удалить четвертый символ:
Edit1.Text := Copy(Edit1.Text, 1, 3) + Copy(Edit1.Text, 5);


 
Keni ©   (2007-04-19 22:41) [6]

var s:string;
begin
s:=edit1.text;
delete(s,4,3);
edit1.text:=s;
end;


самый лучший вариант


 
oxffff ©   (2007-04-19 22:44) [7]


> palva ©   (19.04.07 22:41) [5]
> Вот так можно удалить четвертый символ:
> Edit1.Text := Copy(Edit1.Text, 1, 3) + Copy(Edit1.Text,
> 5);


Используются временные переменные.

> Keni ©   (19.04.07 22:41) [6]
> var s:string;
> begin
> s:=edit1.text;
> delete(s,4,3);
> edit1.text:=s;
> end;
>
> самый лучший вариант


Ты задание внимательно читал?


 
{RASkov}   (2007-04-19 22:58) [8]

> [2] Sapan ©   (19.04.07 22:34)

function MyDelete(const S: String; const N, J: Integer): String;
begin
 Result:=S;
 Delete(Result, N, J);
end;

вызов:
Edit.Text:=MyDelete(Edit.Text, 2, 1);


 
oxffff ©   (2007-04-19 22:59) [9]


> {RASkov}   (19.04.07 22:58) [8]
> > [2] Sapan ©   (19.04.07 22:34)
>
> function MyDelete(const S: String; const N, J: Integer):
>  String;
> begin
>  Result:=S;
>  Delete(Result, N, J);
> end;
>
> вызов:
> Edit.Text:=MyDelete(Edit.Text, 2, 1);


И здесь временные переменные.


 
Virgo_Style ©   (2007-04-19 23:04) [10]

oxffff ©   (19.04.07 22:44) [7]
Ты задание внимательно читал?


О, если внимательно, то там сказано "без переменных". Не без временных переменных, а просто - без переменных.


 
Jeer ©   (2007-04-19 23:05) [11]


> palva ©   (19.04.07 22:38) [3]
>
> TEdit.Text это не переменная а свойство. У свойства нет
> адреса, поэтому свойство не может выступать var параметром
> функции Delete. В этом трудность.
>


Трудности нет, если почитать о типе string (хотя я и не прав - в предке это PChar, но не суть), а не о готовых функциях работы со string.

Тода удаление символа из string сведется к смещению хвоста вперед

for i:= 4 to High(s) do
s[i] := s[i+1];

В данном случае, полагаю, не следует считать i за запретную переменную,
т.к. это организация цикла, а не промежуточное копирование char


 
{RASkov}   (2007-04-19 23:06) [12]

> [9] oxffff ©   (19.04.07 22:59)

Само свойство Edit.Text - уже содержит переменную, например
var
 Len: Integer;
О чем может быть речь ? :)


 
{RASkov}   (2007-04-19 23:10) [13]

> [9] oxffff ©   (19.04.07 22:59)
>
> > {RASkov}   (19.04.07 22:58) [8]
> > > [2] Sapan ©   (19.04.07 22:34)
> >
> > function MyDelete(const S: String; const N, J: Integer)
> :
> >  String;
> > begin
> >  Result:=S;
> >  Delete(Result, N, J);
> > end;
> >
> > вызов:
> > Edit.Text:=MyDelete(Edit.Text, 2, 1);
>
>
> И здесь временные переменные.

Более того вызов, например на нажатие кнопки
procedure Form.ButonClick();
begin
 Edit.Text:=MyDelete(Edit.Text, 2, 1);
end;

не содержит локальных переменных....


 
{RASkov}   (2007-04-19 23:10) [14]

Иначе никак :)


 
oxffff ©   (2007-04-19 23:15) [15]


> Virgo_Style ©   (19.04.07 23:04) [10]
> oxffff ©   (19.04.07 22:44) [7]
> Ты задание внимательно читал?
>
> О, если внимательно, то там сказано "без переменных". Не
> без временных переменных, а просто - без переменных.


Там также не сказано ни про локальные или глобальные.
Так что без всех переменных. В том числе и временных.


> {RASkov}   (19.04.07 23:06) [12]
> > [9] oxffff ©   (19.04.07 22:59)
>
> Само свойство Edit.Text - уже содержит переменную, например
> var
>  Len: Integer;
> О чем может быть речь ? :)


function TControl.GetText: TCaption;
var
 Len: Integer;
begin
 Len := GetTextLen;
 SetString(Result, PChar(nil), Len);
 if Len <> 0 then GetTextBuf(Pointer(Result), Len + 1);
end;

Ну это как единый блок мы будем воспринимать.


 
palva ©   (2007-04-19 23:16) [16]

Ничего не понял. Ну и фиг с ним.


 
Kolan ©   (2007-04-19 23:17) [17]

> не содержит локальных переменных&#133


> не содержит локальных переменных&#133

Ненадо ты их просто в метод перенес(я про Result)

Зы
 А сабж конечно извращение, имхо, я за [13]. О и тут 13&#133


 
Плохиш ©   (2007-04-19 23:23) [18]

Нифигасебе у людей расслабуха в предверии тяпницы :-))


 
{RASkov}   (2007-04-19 23:24) [19]

> Ну это как единый блок мы будем воспринимать.

А почему бы и MyDelete не воспринять как единый блок? :)

>  О и тут 13…

:)


 
Kolan ©   (2007-04-19 23:28) [20]

> oxffff ©   (19.04.07 23:15)

НА асме еще напиши, и мы спокойно пойдем спать&#133


 
oxffff ©   (2007-04-19 23:29) [21]


> {RASkov}   (19.04.07 23:24) [19]
> > Ну это как единый блок мы будем воспринимать.
>
> А почему бы и MyDelete не воспринять как единый блок? :)


Edit.Text:=MyDelete(Edit.Text, 2, 1);

Здесь 2 временных переменных.
одна на Gettext, вторая на result


 
Jeer ©   (2007-04-19 23:31) [22]


> palva ©   (19.04.07 23:16) [16]
>
> Ничего не понял. Ну и фиг с ним.


Это по нашему:)

"И так приятно у костра
Забывшись взглядом в небеса
Считать парсеки и года
Забив на все и навсегда" (С)


 
{RASkov}   (2007-04-19 23:32) [23]

> [21] oxffff ©   (19.04.07 23:29)

См [14] :(


 
Kolan ©   (2007-04-19 23:35) [24]

RASkov &#151; это твое мыло?
RASkov@gmail.ru


 
oxffff ©   (2007-04-19 23:38) [25]


> {RASkov}   (19.04.07 23:32) [23]
> > [21] oxffff ©   (19.04.07 23:29)
>
> См [14] :(


Да я собственно тоже к такой мысли пришел.
Поскольку временная переменная будет всегда при gettext.

здесь тоже переменная нужна
result := Perform(WM_GETTEXT, BufSize, Longint(Buffer));

Вот если выловить адрес буфера окна.


 
{RASkov}   (2007-04-19 23:57) [26]

> [24] Kolan ©   (19.04.07 23:35)

Нет.


 
Kolan ©   (2007-04-20 00:09) [27]

> [26] {RASkov}   (19.04.07 23:57)
> > [24] Kolan ©   (19.04.07 23:35)
>
> Нет.

Дак напиши хозяину, он отдаст может ник тебе&#133


 
{RASkov}   (2007-04-20 00:21) [28]

> [27] Kolan ©   (20.04.07 00:09)

:) Никчему все это.
Более того и адреса-то такого скорее всего нет, может кто случайно зарегил :)
Да ладно, фик с ним, У меня есть зарегиный ник, но под ним я практически не пишу. ASMSoft ©


 
Sapan ©   (2007-04-20 09:57) [29]

Всем спасибо, сделал так:
Edit1.SelStart:=3;
Edit1.SelLength:=1;
Edit1.SelText:="";



Страницы: 1 вся ветка

Текущий архив: 2007.05.13;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.07 c
4-1166032651
P@r@zit
2006-12-13 20:57
2007.05.13
Информатика


2-1177055548
allucard
2007-04-20 11:52
2007.05.13
Как заставить работать колесо прокрутки на форме?


2-1176994250
Ксандр
2007-04-19 18:50
2007.05.13
Методы современной криптографии


2-1177411845
zet
2007-04-24 14:50
2007.05.13
Создание процедур


2-1177284822
rosl
2007-04-23 03:33
2007.05.13
запрос SQL