Число знаков в Edit |
жека | Дата: Среда, 21.01.2009, 01:16 | Сообщение # 1 |
Ранг 3
Группа: Проверенные
Сообщений: 26
Награды: 0
Репутация: 1
Статус: Offline
| как подсчитать количество знаков набранное в Edit а результат выводился в Label
|
|
| |
|
Admin | Дата: Среда, 21.01.2009, 10:44 | Сообщение # 2 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| Есть функция Length(S); где S - строка. Функция возвращает число символов в строке S.
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
Ekz | Дата: Среда, 21.01.2009, 12:12 | Сообщение # 3 |
Ранг 10
Группа: Пользователи
Сообщений: 164
Награды: 2
Репутация: 1
Статус: Offline
| Вот эту строку поставь в процедуру procedure TForm1.Edit1Change(Sender: TObject); Code Label1.Caption:=IntToStr(Length(Edit1.text));
|
|
| |
|
senson | Дата: Воскресенье, 02.08.2009, 21:14 | Сообщение # 4 |
Ранг 1
Группа: Пользователи
Сообщений: 6
Награды: 0
Репутация: 0
Статус: Offline
| Доброго времени суток. Подскажите как перенести только первый символ ("-") из edit в label Заранее благодарен.
|
|
| |
|
Admin | Дата: Воскресенье, 02.08.2009, 22:08 | Сообщение # 5 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| senson, это разве както связано с темой о нахождении количества символов в Edit??? Code Label1.Caption := Edit1.text[1]; Если я правильно понял что тебе нужно.
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
senson | Дата: Понедельник, 03.08.2009, 00:14 | Сообщение # 6 |
Ранг 1
Группа: Пользователи
Сообщений: 6
Награды: 0
Репутация: 0
Статус: Offline
| Благодарю за ответ. Может я не правильно понял эту тему, но здесь говорится про компаненты, зачем плодить кучу тем. Если не так, то дико извиняюсь. Что то не работает или я не так пишу: if Edit6.Text='-' then begin Label2.Caption:=Edit6.Text[1]; end; Если результат получается со знаком "-" (минус), то этот минус нужно перенести в label
Сообщение отредактировал senson - Понедельник, 03.08.2009, 00:33 |
|
| |
|
Admin | Дата: Понедельник, 03.08.2009, 08:03 | Сообщение # 7 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| ну ты просто написал следующее: Если в Edit6 написано "-" (только "-" и ничего больше, даже пробелов нету) то копируем этот минус (а точнее первый символ) в Label. Ну и на будующее ставь точки остонова (F5), и смотри в какие части кода заходит а в какие нет, и еше можно узнать содержимое переменных (навести и подержать над ней мышь.) Ну а по теме: была проблема нахождени количества символов введенных в поле Edit. А у тебя другая проблема. Ну раз начали решать проблему, то не нужно уходить из темы в новую. (единственное, что людям у которых аналогичная проблема будет сложнее найти ответ). Нужно пример, как программа должна работать. Ну и краткий коментарий для чего это нужно (вдруг предложу решение лучше) Quote (senson) Если результат получается со знаком "-" (минус), то этот минус нужно перенести в label То есть если в Edit6 появляется что-то вроде этого: "-93" (должно быть отрицательное число), то мы в Label2 должны написать "-". Да? Ну вобщем ты почти правильно сделал, но вот смотри: Code if Edit6.Text='-' then тут ты сравниваеш все содержимое Edit6 с '-'. А тебе нужно только сравнивать первый сивмол. Строка это обычный массив символов. Т.е. к любой строке (String) можно обращаться как к массиву, например: Code var s:string; ... s:="Строка"; ShowMessage(s[1]); // покажется сообщение "С" ShowMessage(s[2]); // покажется сообщение "т" или так: Code if s[1] = 'С' then ShowMessage('первый символ ' + s[1]) // тут если первый символ это "С", то покажется сообщеие "первый символ С". т.е. я в квадратных скобках указываю номер символа, который будет возвращен. Как получать можно символ, так можно этот символ и заменить. Например, в строка заменится на "Qтрока" Если ты понял все, и разобрался, то исправить ошибку не составит труда. Если, что не понятно, пиши, помогу...
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
senson | Дата: Понедельник, 03.08.2009, 18:45 | Сообщение # 8 |
Ранг 1
Группа: Пользователи
Сообщений: 6
Награды: 0
Репутация: 0
Статус: Offline
| Пытаюсь написать калькулятор который производит вычисления над дробями. Благодарю за направление в нужное русло со строками, будем думать. Что то я запутался с вычислениями, так что пока не до результатов со знаком минус. Буду разбираться и наверное долго
Сообщение отредактировал senson - Понедельник, 03.08.2009, 18:51 |
|
| |
|
Admin | Дата: Понедельник, 03.08.2009, 19:12 | Сообщение # 9 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| Ну в любой момент можете обратиться за помощю на сайт. Но не переставайре искать решение. Личный опыт показывает, что если не перестанеш разбираться, то есть шанс разобраться с проблемой самому, раньше чем подскажут, а это куда приятнее, и полезнее, чем поднесут на блюдечке!
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
senson | Дата: Понедельник, 03.08.2009, 19:17 | Сообщение # 10 |
Ранг 1
Группа: Пользователи
Сообщений: 6
Награды: 0
Репутация: 0
Статус: Offline
| Полностью согласен с Вами. Самому разбираться намного полезнее. Будут проблемы, а они будут, обязательно обращусь.
|
|
| |
|
senson0583 | Дата: Вторник, 11.08.2009, 22:34 | Сообщение # 11 |
Ранг 1
Группа: Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
| Вроде получилось. Может тапорно написано: //отрицательный результат s:=Edit7.Text; s1:=Edit6.Text; if (s[1]='-') or (s1[1]='-') then begin Delete (s,Pos('-',s),1); Delete (s1,Pos('-',s1),1); Label2.Caption:='-'; end; Edit7.Text:=s; Edit6.Text:=s1; ............ но, вроде работает. Спасибо большое за помощь. Что то не понятно. Пишу от себя (senson), а получается что от senson0583 Какая то фигнюшка
Сообщение отредактировал senson0583 - Вторник, 11.08.2009, 22:36 |
|
| |
|
Admin | Дата: Среда, 12.08.2009, 00:11 | Сообщение # 12 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| Зачем же так извращаться через строки? Можно же проще: Code x:integer; ... x:=StrToInt(Edit1.text); if x<0 then Label2.Caption:='-'; ну и обратная операция Code Edit1.text := inttostr(x); Что ж ты сразу не сказал что с числами оперируеш и что именно тебе нужно. Ну ничего, зато со строками научился работать
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
SOKOJI | Дата: Среда, 23.09.2009, 00:39 | Сообщение # 13 |
Ранг 1
Группа: Проверенные
Сообщений: 12
Награды: 0
Репутация: 0
Статус: Offline
| Раз речь идет о строках, то не буду создавать новую тему. В общем вопрос в следующем: Как объединить, например, текст из 2х полей label и к ним дописать еще свой текст и все это поместить в одну переменную? Мне просто интересно как к переменной добавить свой текст. Приведу пример подобной конструкции на php: <?php $a = "str"; $b = "ing"; $c = $a." ".$b." - сложили переменные"; // Результат - "str ing - сложили переменные" ?>
Сообщение отредактировал SOKOJI - Среда, 23.09.2009, 00:39 |
|
| |
|
Admin | Дата: Четверг, 24.09.2009, 10:10 | Сообщение # 14 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| Аналогично и на Delphi (вот только переменную нужно объявить). А вообще считаю более правильными языки где нужно переменную объявлять. Ведь случайно можно описаться, и будет совершенно новая переменная, и ожидаемого результата не будет. Так можно очень долго искать ошибку Вобщем если не в курсе то переменные обявляются либо в процедуре перед Begin, либо в глобальном Var (в самом начале) (про классы не буду рассказывать, так как пока что этого хватит). Вобщем обявляем переменные: Code var s1, s2, sSum: String; Обявили типа String. В отличии от php в Delphi имеется тип переменной. String - строка, Integer - целое число и т.д.. (кстати строка содержащая "5", не равна переменной типа integer содержащей ту же самую 5, потомучто в одном случае это число, а в другом это строка.). Итак, после объявления переменной, мы с ней можем распоряжаться (ВАЖНО! если переменная объявлена в процедуре, или функции, то она действует только в пределах этой функции. Также она перекроет все глобальные переменный, т.е. если есть глобальная переменная X и локальная в процедуре, которая называется тоже X, то при обращении к переменной X будем обращаться не к глобальной а к локальной.) Теперь можно приступить к написанию основного. Думаю процедуру как создавать не нужно рассказывать. Вобщем имеется 2 Label, в одном хранится "str", в другом "ing", нужно сложить. Можно все сделать за одно дайствие, но я распишу поподробнее. Кстати, добавь еще 1 Label в него результат выведем. Также кинь на форму кнопку, и кликни на нее дважды - создаш процедуру, обрабатывающую клик по кнопке. Code s1 := Label1.Caption; // сохранили в переменной содержимое свойства Caption (текст вобщем) s2 := Label2.Caption; sSum := s1 + s2 + 'Сложили переменные'; // складываем Label3.Caption := sSum; // выводим результат Вот и все. Писал прямо тут, но думаю ошибок быть не должно. PS советую почитать /publ/28 (писал очень давно, сейчас бы переписал его, да вот времени нету) Хотя на мой взгляд объяснял доходчиво, думаю должно быть все понятно.
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
SOKOJI | Дата: Четверг, 24.09.2009, 18:22 | Сообщение # 15 |
Ранг 1
Группа: Проверенные
Сообщений: 12
Награды: 0
Репутация: 0
Статус: Offline
| Admin, да, спасибо, все понял. Учебник уже читал
|
|
| |
|