Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.045 c
2-1177273657
Malik
2007-04-23 00:27
2007.05.13
Вопрос компонентоам создающим дерево


15-1176195272
ocean
2007-04-10 12:54
2007.05.13
Visual C++ Express


8-1154876297
aleksei_c
2006-08-06 18:58
2007.05.13
Захват картинки с окна перекрытого другим


11-1156803696
AndreyRus
2006-08-29 02:21
2007.05.13
Memo с гипертекстом


15-1176453614
Riply
2007-04-13 12:40
2007.05.13
Презумпция невиновности.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский