Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: stalker, Ekz 
Форум » Все о Delphi » Начинающим » Число знаков в Edit
Число знаков в 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
smile
Есть функция 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

Прикрепления: 2204557.jpg(10Kb)


Сообщение отредактировал 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])
// тут если первый символ это "С", то покажется сообщеие "первый символ С".

т.е. я в квадратных скобках указываю номер символа, который будет возвращен. Как получать можно символ, так можно этот символ и заменить. Например,

Code
s[1] := 'Q';

в строка заменится на "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
Ну в любой момент можете обратиться за помощю на сайт. Но не переставайре искать решение. Личный опыт показывает, что если не перестанеш разбираться, то есть шанс разобраться с проблемой самому, раньше чем подскажут, а это куда приятнее, и полезнее, чем поднесут на блюдечке! smile

Не оказываю помощь через личные сообщения и 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 (вот только переменную нужно объявить). А вообще считаю более правильными языки где нужно переменную объявлять. Ведь случайно можно описаться, и будет совершенно новая переменная, и ожидаемого результата не будет. Так можно очень долго искать ошибку smile

Вобщем если не в курсе то переменные обявляются либо в процедуре перед 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, да, спасибо, все понял. Учебник уже читал smile
 
Форум » Все о Delphi » Начинающим » Число знаков в Edit
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz