Отправляет email-рассылки с помощью сервиса Sendsay

Программирование на Delphi

  Все выпуски  

Программирование на DELPHI v3-7 Сетевое программирование(Часть 3)


Информационный Канал Subscribe.Ru

Программирование на DELPHI

Программирование на DELPHI


Hello ALL!!! Сетевое програмирование(Часть 3).
Если у вас есть предложения или замечания, прошу писать мне ForDelphi@Narod.ru

В этом выпуске

1)Как законнектиться через Dial-Up соединение по умолчанию-->
2)Использование компонента TServerSocket.-->

3)Пишем свой ЧАТ-->

4)Search for Craks-->
4)Вопросы -->
5)Ответы -->


Как законнектиться через Dial-Up соединение по умолчанию

Для этого используется следующая функция: (Возвращает True в случае успеха)

Uses Registry, windows;

Function DUNDialDefault(Hide : Boolean) : Boolean;
// Показать или скрыть диалог dial-up
var Reg : TRegistry;
var TempResult : Boolean;
var Name, con : String;
var ASW : Integer;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\RemoteAccess', False) then
begin
TempResult := True;
Name := Reg.ReadString('Default');
end
else begin
tempresult := False;
end;
Reg.Free;
if TempResult = True then
begin
if Hide = True then ASW := SW_HIDE
else ASW := SW_SHOWDEFAULT;
con := 'rnaui.dll,RnaDial ' + Name;
ShellExecute(0, nil, 'rundll32.exe' , PChar
(con), 'C:\windows\', ASW);
end;
Result := tempResult;
end;


В Win2000 и WinXP можно воспользоваться WinInet:

Для этого добавьте WinInet в секцию uses.
Затем используйте следующую команду:

InternetAutoDial (INTERNET_AUTODIAL_FORCE_ONLINE, handle);

handle = родительское окно


Использование компонента TServerSocket.

В Delphi документации по многопотоковому TServerSocket налито довольно много воды, и начинающему программисту сложно понять суть дела. Давайте попытаемся пролить немного света на этот раздел хелпа.

Совместимость: Delphi 3.x (или выше)

Вообще-то, создать многопотоковый сервер, который ожидает пришедшие сообщения на сокете довольно просто. В Delphi для этой цели достаточно использовать компонент TServerSocket.

Давайте рассмотрим структуру работы данного компонента:

- Добавляем TServerSocket в Вашу основную форму.
- Устанавливаем свойство Servertype в stThreadBlocking
- Создаём новый "unit" (показанный ниже) содержащий поток сервера.


Устанавливаем следующий код на OnSocketGetThread

procedure TfrmMain.fSocketGetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
begin
// Здесь создаём объект TServerThread, который я привожу ниже.
// Новый объект создаётся каждый раз, когда когда установлен канал связи.

SocketThread := TServerThread.Create( FALSE, ClientSocket );
end;

TServerThread - это объект, который я создаю самостоятельно. Объект наследуется от TServerClientThread и содержит код, который обычно читает и пишет данные из/в сокет.

Созданный "unit", содержит следующий код:

unit serverthread;

interface

uses
windows, scktcomp, SysUtils, Classes, Forms;

type
EServerThread = class( Exception );
// serverthread это потомок TServerClientThread
TServerThread = class( TServerClientThread )
private
fSocketStream : TWinSocketStream;
public
procedure ClientExecute; override;
// ClientExecute отменяет
// TServerClientThread.ClientExecute
// и содержит код, который
// выполняется при старте потока
end;

implementation

procedure TServerThread.ClientExecute;
begin
inherited FreeOnTerminate := TRUE;
try
fSocketStream := TWinSocketStream.Create( ClientSocket,
100000 );
// 100000 - это таймаут в миллисекундах.
try
while ( not Terminated ) and ( ClientSocket.Connected ) do
try
// В это место обычно помещается код,
// ожидающий входных данных, читающий из сокета или пишущий в него
// Пример, приведённый ниже, показывает, что можно добавить в данную
// секцию программы.

except on e:exception do
begin
// Если произошла ошибка, то закрываем сокет и выходим
ClientSocket.Close;
Terminate;
end;
end;
finally
fSocketStream.Free;
end;
except on e:exception do
begin
// Если произошла ошибка, то закрываем сокет и выходим
ClientSocket.Close;
Terminate;
end;
end;
end;

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

if ( not Terminated ) and
( not fSocketStream.WaitForData( 1000000 ) ) then
begin
// Обработчик таймаута (т.е. если по истечении 1000000 миллисекунд
// от клиента не пришло запроса

end;
// В сокете есть входящие данные!

Для чтения данных, Вам понадобится создать буфер для хранения полученных данных. Обычно буфер - это PByteArray или массив символов. В этом примере я обозвал буфер как fRequest который является массивом символов. Кроме того я ожидаю фиксированное количество байт. Массив имеет постоянный размер REQUESTSIZE.

var
ac, readlen : integer;
begin
FillChar( fRequest, REQUESTSIZE, 0 );
ac := 0;
repeat
readlen := fSocketStream.Read( fRequest[ac],
1024 );
// считываем блоки по 1024 байт, до тех пор, пока буфер
// не заполнится

ac := ac+readlen;
until ( readlen = 0 ) or ( ac = REQUESTSIZE );
end;

Если readlen равно 0, значит больше нет входящих данных. Функция Чтения завершается через 100000 миллисекунд после запуска в TWinSocketStream.Create(). Если Вы не знаете сколько времени нужно ожидать запроса от клиента, то чем меньше будет таймаут, тем лучше. В большинстве случаев максимальный таймаут не должен превышать 30 секунд.

При посылке ответа, Вы должны знать, в каком режиме работает клиент. Многие клиенты ожидают только один пакет ответа, другие ожидают несколько пакетов. В этом примере, я подразумеваю клиента, который ожидает только один пакет, так что я должен послать мои данные назад в одном блоке:

fSocketStream.WriteBuffer( fRep, fReplySize );

fRep это буфер, содержащий ответ на запрос клиента, и fReplySize - это размер буфера.


Пишем свой ЧАТ

На самом деле, чат очень легко написать, но с помощю компонентов TServerSocket и TClientSocket.Хотя, чтобы оградить вас от ошибок при создании чата, рекомендую сразу скачать рабочий исходник от сюда- http://fordelphi.narod.ru/chat1.rar

Приступим.

Для работы этого кода, на форме должно лежать:

TListBox-1шт.с именем Mes
TButton-4шт. с именами Button1,Button2,Button3 и Button4
TEdit-4шт. C именами Edit1,Edit2,Edit3 и Edit4
TServerSocket-1шт.с именем Server
TClientSocket-1шт.с именем Client

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,wininet, StdCtrls, ScktComp, Psock, NMSTRM;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Client: TClientSocket;
Server: TServerSocket;
Button3: TButton;
Edit2: TEdit;
Label1: TLabel;
Edit3: TEdit;
Label2: TLabel;
Edit4: TEdit;
Label3: TLabel;
mes: TListBox;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
A:integer;
implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);{Код для кнопки активации сервера}
begin
server.Port:=strtoint(edit2.text);{Порт для прослушивания}
server.Active:=true;{Активация прослушивания порта}
end;

procedure TForm1.Button1Click(Sender: TObject);{Код для кнопки коннекта}
begin
Client.Port:=StrToInt(edit2.Text);{Порт для подключения}
client.Address:=edit3.Text;{IP-адрес}
client.Host:=edit4.Text;{Имя Компа}
client.Active:=true;{Подключение}
A:=0;
ShowMessage('Ура! Подключились!');
end;

procedure TForm1.Button2Click(Sender: TObject);{Код для кнопки отправки сообщения}
begin
client.Socket.SendText(edit1.Text);{Отправка}
mes.items.Strings[a]:=edit1.Text;{Пишем этот текст у себя}
A:=a+1;
edit1.Text:='';
end;

procedure TForm1.ServerClientRead(Sender: TObject;
Socket: TCustomWinSocket);{Эта функция вызывается при получении сообщения}
begin
mes.items.Strings[A]:='>'+socket.ReceiveText;{Записываем}
A:=A+1;
end;

 

procedure TForm1.Button4Click(Sender: TObject);{Код кнопки очистки ЛистБокса}
begin
mes.Items.Clear;
A:=0;
end;

end.

Надеюсь, этот простенький пример поможет вам в дальнейшем при создании приложений клиент/сервер


Search for Craks

Недавно копаясь в нете я нашёл просто самую лучшую и незаминимую в хозяйстве прогу(IMHO). Это поисковик крэков, причём очень удобный-Вы просто вводите название программы и нажимаете на кнопочку, и всех делов.Весит всего 14кб.Всем, кот ещё не обзавёлся данной программой, рекомендую скачать


Вопросы

Напоминаю всем, что свой вопрос вы можите задать по адресу fordelphi@narod.ru с темой VOPROS


Вопрос # 10 от Delivery

Привет Пеопл!!! Хочу сказать что в Делфи 7 Компоненты Fastnet нету,
это компонента из прошлых версий Делфи. В Делфи 7 Появились новые
компоненты для работы с сетевыми протоколами и интернет: "Indy
Clients, Indy Mics, Indy Server,...." и всё остальное связанное с
Indy. Кстати а у меня встречный вопрос:"Как Отображать те компоненты
которые в данных компонентах они есть а на вкладке их нету. К примеру
TIdFTPListItems TFileListView(Если залезть в Component->Configure
palette...->Далее выбрать вкладку System то TFileListView есть а на
вкладке его нету и поэтому у меня не получаеться использовать их???).
А как использовать TIdFTPListItems и где он находиться я не имею
представления да и хелп Хромает???"
Моё Мыло: Mikle_kpi@ukr.net
Моя Аська: 158888038

ОТВЕТИТЬ


Вопрос # 11 от rasilki2@mail.kz

У меня такой вопрос, как в Delphi вызвать окно Windows форматирование
дискеты. Спасибо!!!

ОТВЕТИТЬ


Вопрос # 12 от Satan Claus

Люди! Помогите!
Как скрыть свое приложение из Диспетчера задач (CTRL+Alt+Del) под XP
если функция RegisterServiceProcess не пашет (Delphi пишет:
"Точка входа в процедуру RegisterServiceProcess не найдена в
библиотеке DLL KERNEL32.DLL")?????

ОТВЕТИТЬ


Вопрос # 13 от hasan

Здравствуйте.

У меня такой вопрос.

Как узнать размер файла находящегося на сервере в интернете, но
естественно не скачивая его предварительно?

ОТВЕТИТЬ


Вопрос # 14 от Евгений Р.

Здравстввйте!
Раз уж Вы затронули сетевое программирование и Delphi (в т.ч. сетевое обновление программ), то логичным будет описать сетевую инсталяцию программ с использованием BDE. Проверка наличия последнего на компьютере, скачка bdeinst.cab по существующему адресу (с хорошим хостингом) и инсталяция.

С уважением,
Евгений.

ОТВЕТИТЬ


Вопрос # 15 от santa_k

Здравствуйте, дельфисты.
Скажите пожалуйста: как мне экспортировать таблицу Worda сложной
структуры (ячейки разной высоты) в базу данных (например: dbf).
Чтобы потом сделать просмотр этой базы средствами дельфи?

Спасибо.

ОТВЕТИТЬ


Вопрос # 16 от Алексей

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


NMSMTP1.Host:= 'smtp.rambler.ru'; {адрес SMTP сервера}
NMSMTP1.Port := 25; {Порт SMTP сервера}
NMSMTP1.Connect; {Подключение к SMTP серверу}
With NMSMTP1 do
begin
Charset := 'windows-1251'; {Кодировка письма}
PostMessage.FromAddress:='xxx'; {Отправитель письма}
PostMessage.ToAddress.Text:='xxx' ; {Получатель письма}
PostMessage.Body.Text:='xxx'; {Текст письма}
SendMail; {Отправляем письмо}

end;
{Проверяем состояние подключения}
if NMSMTP1.Connected then
NMSMTP1.Disconnect {Отключение от сервера}

ОТВЕТИТЬ


Вопрос # 17 от SINNER

Кто нибуть знает, как правельно скомпилировать *.res файл EXE-шника с помощью drcc32. И как из первого EXE-шника
вызвать второй.
Зарание благодарен.

ОТВЕТИТЬ


Вопрос # 18 от Кременецкий А.Н(ОАО "МосАвтоСтекло")

Возник интересный вопрос. Требуется пропихнуть TCP-пакет через прокси,
посредством HTTP,SOCKS5. В сети нашел только старый престарый документ
"Туннелирование пакетов" который толком не понял. Если кто знает,
пожалуйста отзовитесь....

ОТВЕТИТЬ


Вопрос # 19 от Oleg666

Привет народ! Кто-нибудь знает, как пишуться кряки для программ? Как можно во времы выполнения программы узнать(из другой программы) все переменные и их значения???

ОТВЕТИТЬ


Вопрос # 20 от Заргаров Александр

Здраствуйте!

Есть небольшая проблема.. Интересно занимался ли кто-нибудь этим ранее - может подскажут.
Вообщем, есть какой-то компонент-контейнер (для текста - Memo, RichEdit ..). Хотелось бы сделать выделение по столбцам, как в Делфи при нажатии Alt+Shift+стрелки. Пробовал делать с отрисовкой выделения, но что-то не очень симпатично получается и неудобно.. Ведь в Делфи, Фаре и у Мелкософта сделано как обычное выделение.. Делал ли кто-нибудь такое. Советовали мне компоненты SynEdit, но что-то там намудрено.. и я так и не увидел желаемого результата. Заранее спасибо.

ОТВЕТИТЬ


Вопрос # 21 от Polivanov Nikolay Sergeevich

Привет! Как на Delphi узнать(вычислить, определить) скорость связи с удаленным
сервером(Желательно используя WinSock)?
С уважением p_kolya.

ОТВЕТИТЬ


Вопрос # 22 от Юрий Васильев

Подскажите, please, как скрыть приложение на панели задач и упрятать
значок в трэй? Спасибо заранее.
С уважением, NoN

ОТВЕТИТЬ


Вопрос # 23 от Сергей.@rambler.ru

Подскажите чайнику как можно написать маденький сканер для сети.
НО желательно чтобы он мало весил и ел мало памяти.
За ранее блогодарен.
Ответ прошу прислать на Email: Whitespider@rambler.ru

ОТВЕТИТЬ


Ответы

Вопрос #5 от GLUK

Короче у меня такой вопрос. У кого недь есть компонент который в хинты
может прибавлять всякую бяку. Кртинки, цвет менят и прочее... плиз
скажите где скачать?!!!

Отвечает GLUK

Такая чтука есть всё таки вот линька
http://www.evilproger.narod.ru/EVILIB.ZIP но вот зловестный автор этих
компонентов, чудо в перьях.... Я бы ему поставил 5 с плюсом за
бездарное использование сочетанием клавиш Ctrl+V ..... А дело то в том
что эти его компоненты работают только под ту Delphi под которой
компилился.... Если кому надо этот либ тогда пишите письмо cамому
автору, он вам пришлёт его с радостью, это я к тому что на народе
ссылки иногда гонят глючат и прочее.... ;)

Отвечает dig-vam

Jedi Code Library: File List on SourceForge:
http://jvcl.sourceforge.net/

Welcome to JEDI-VCL - with over 400 components,
the best OpenSource component library for Delphi!


Используй компонент TJvBalloonHint из ?той библиотеки
Также глянь на демо
\JCL\jvcl\examples\JvBalloonHint\

Отвечает Nikolay

У меня есть компонент могу скинуть, где брал не помню
GlobusLib.EXE

Отвечает Хобbeat

Все необходимые тебя компоненты можешь искать на www.torry.net.
Компонент для изменения хинтов входит в LMDTools, Globus.lib, EidoS, и
во многие другие.

Хобbeat

Вопрос #6 от LEONID

Доброго дня и ночи!

Может быть я чего-то не понимаю, но у меня в стандартно
установленном Delphi7 нет вкладки FASTNet ?!
Помогите, пожалуйста, разобраться.
--
Успехов во всем! icq:99728344
Тутов Леонид Васильевич mailto:leon@plotinka.ru

Отвечает Angel(Admin)

В Delphi7 FastNet'a нету, т.к он полностью заменён закладкой Indy, но его можно вытащить из дистрибутива Delphi6.Хотя мне больше нравится Delphi6. (ИМХО)

Отвечает GLUK

Слушай! А ты возми и установи ещё и пятую delphi и всё будет клёво...
ТАм балин правда воткнули эти Brolando-вци этот Indy компонент в
стандартную библиотеку терь мучаемся :(

Отвечает Art4

Здравствуйте!
В Delphi7 отказались от компонентов FASTNET и предложены
Indy Clients & Indy Servers. С ними достаточно легко разобраться
самостоятельно. Посмотрите пример в Дельфе: \Demos\Internet\NetChat\

Отвечает corel86

Кстати, у меня тоже нет:))
И я недавно тоже такой вопрос задавал(на него никто не ответил:)
Теперь, насколько я знаю, этой панели и не должно быть, он по-моему только Дельфи 6, не уверен на 100 %:)
Но так как точно я не знаю, то можно сделать вывод, что ее просто нет, ты же наверняка пиратский компакт устанавливал, а на них много чего нет. Например, у меня в комплекте отсутствует InstallShied, клёво да??

Короче, чем мог, помог..

Если узнаешь суть , то пожалуйств ответь мне.

regards, makswell

Отвечает MihaSoft

В Delphi 7 FASTNet нет! только в Delhi 6.
А лучше используй закладки Indy, они намного функциональней!

Отвечает rasilki2@mail.kz

Эта вкладка существует в Delphi 5, а в 7 ее нет.

Отвечает Хобbeat

Библиотека FastNet в D7 не поддерживается. Т.к. ее полностью заменяет
Indy. Если есть большое желание использовать именно FastNet, то ее
небходимо установить дополнительно с предыдущих дистрибутивов Delphi.

Хобbeat

Вопрос #7 от CALEAN

Доброго Вам времени суток! Пишет вам Николай! В начале
хотелось бы поздравить вас с наступающим Новым Годом,
пожелать всего наилучшего и больших успехов в Ваших делах!
Мне очень понравилась ваша рассылка, я узнаю много новых и
познавательных вещей в Делфи, но на данный момент мой папа
задал мне задачу, где мне нужно рисовать графики используя
определённые данные. Я решил использовать один из
компонентов TChart, TDBChart и TQRChart. Но так как я не
имею никакой информации об этих компонентах я почти ничего
не понял о том как с ними работать. Методом ?тыканья?
ничего не получается, в internet-е ничего конкретного не
могу найти, не могли бы Вы мне прислать информацию об этих
компонентах или хотя бы конкретные ссылки в internet-е.
Заранее благодарю, с уважением Николай! Еще раз с
наступающим Новым Годом!

Отвечает Dmitriy Belyaev

Я и сам пробовал использовать компонент TChart, разобрался, но работает
кривовато :(
Вот нашел в инете исходники http://www.delphimaster.ru/download/93.zip, кто-то
постарался, простенькая прога, строит графики по заданной функции, работает Zoom
и Scroll
Если помог, буду рад :-)
GiBi

Отвечает KseKo

Компонент Chart представляет поле, на котором строятся графики и
диаграммы, управляет координатными осями и формой отображения.
Отображаемые данные содержатся в объектах Series типа TCharSeries. Для
каждого компанента Chart можно указать несколько серий. Если должны
отображаться графики, то кажджая серия соответствует одной кривой на
графике. Если должны отображаться диаграммы,то для некоторых видов
диаграмм можно наложить друг на друга несколько различных серий.

Пример построения графиков синуса и косинуса.
Размести на форме компонент Chart, свойству Align присвой значение
alClient и сделай двойной щелчек на этом компоненте. Откроется окно
Редактора диаграмм Chart. Оно имеет две основные страницы:
Chart - задание общих настроек компонента,
Series - настройка свойств отдельных серий.
Каждая из этих страниц в свою очередь имеет ряд закладок.

Закладка series
Кнопка Add позволяет добавить новую серию. нажав ее, мопадаем в окно,
в котором можно выбрать тип диаграммы или графика. выбираем Line -
кусочно-линейный график. С помощью кнопки Title можно задать какое-то
осмысленное имя серии (Синус Косинус). Закладка Дупутв позволяет
задать параметры отображения легенды диаграммы (списка обозначений)
или вообще убрать её с экрана. Закладка Panel определяет вид панели,
на которой отображается диаграмма, закладка 3D дает возможность
изменить внешний вид диаграммы: наклон, сдвиг, толщину и т.д.
Теперь осталось написать операторы, задающие точки графика. Это можно
сделать в обработчике события формы OnCreate.

Procedure TForm1.FormCreate(Sender: TObject);
Var I:Intrger;
Begin
For i:=0 to 100 do
Begin
Series1.AddXY(0.02*Pi*i,sin(0.02*Pi*i),'',clRed);
Series2.AddXY(0.02*Pi*i,cos(0.02*Pi*i),'',clBlue);
end;
End.

Значения, которые должны отображаться на графиках, заносятся в серии
Series1 и Series2 методом AddXY. Первый параметр этого метода -
значение аргумента, второй - значение функции в этой точке. Третий
параметр, который в данном примере оставляем в виде пустой строки -
это обозначение (надпись) соответствующей точки. Последний параметр
метода - цвет графика

Вопрос #8 от FAz

Hello :)
что делает windiws когда идет подключение к интернету
и когда отключается ??
--
..... )

Отвечает GLUK

Ваааще в принцепе, виндовс это операционная система! Подключение идёт
когда на кнопку подключение нажимаешь! ;) А отключается когда
нажимаешь отключиться.... Всё очень просто и предельно ясно ;)

Вопрос #9 от oleg666

Приветик, подскажите пожалуйста, как integer отобразить в string'е

Отвечает IntFace

Ну так есть две функции IntToStr и StrToInt короче их надо юзить!!!!! В хелпе параметры посмотри, функции не API.

Отвечает kvi@nz.nk.nornik.ru

Есть функция такая inttostr

Например

Label1.caption:=inttostr(Edit1.text);

Отвечает GLUK

А ну вроде как везде

var
n:integer
.......
а куда вставить нада IntToStr(n) если я тя конечно правльно понял

Отвечает Антон

IntToStr

Отвечает Angel(Admin)

Для этого тебе нужна функция IntToStr(int:integer):string;, а вот если надо наоборот, тогда юзай эту- StrToInt(Str:string):integer; Эти функйии находятся в модуле SysUtils(его необходимо подключить в раздел uses)

Отвечает santi@tut.by

IntToStr(число_или_переменная);
__________________________________________________________________
Alexander Pivovar santi@tut.by
ICQ#: 195088620
Current ICQ status:

+ More ways to contact me
__________________________________________________________________

Отвечает slim

Привет, если ты имеешь ввиду преобразование типов, то используй
функцию IntToStr для целых типов, FloatToStr для типов с плавающей
точкой и т.д.

Отвечает rasilki2@mail.kz

inttostr(a:integer)- из Integer в String
strtoint(s:string) - из String в Integer

Отвечает Dmitriy Belyaev

Все предельно просто

var S : String;
i : Integer;
begin
i := 45;
S := 'В переменной i находиться значение - ' + InttoStr(i) + ' и никакой
другое :-)';
end;

GiBi

Отвечает corel86

Из этого вопроса я делаю вывод, что еще совсем зеленый чайник:)))
Первый раз слышу такой тупой вопрос, в смысле легкий.
Ну это так, отступление...

Короче, есть такие функции преобразования типов(надеюсь знаешь, что такое тип:):
Вот, я их перечисляю в порядке, каком попало:)На самом деле, в порядке важности и надобности:

IntToStr - преобразование целого числа в строку. Значени IntToStr( 12987 ) равно '12987'
StrToInt - преобразование строки в целое число. Значение StrToInt( '12345' ) равно 12345
FloatToStr - преобразование дробного числа в строку. Значение FloatToStr( 3.74 ) равно ( ' 3.74' )
StrToFloat - преобразование строки в дробное число. Значение StrToFloat ( ' 3.14 ' ) равно 3.14

Ну и приведу тебе один пример, создам программу, которая будет ожидать от пользователя ввода 2 чисел(в Edit1 и в Edit2), а по нажатии на кнопку(button1, будет складывать их и выводить в Label1(что за туфту я пишу, серьезный программист вроде:)Короче вникай, не забудь разместить все компоны:
создаем обработчик события по кнопке:
procedure Tform1.Button1Click(Sender: TObject);
begin
Label.Caption:=
IntToStr( StrToInt(Edit1.Text) + StrToInt(Edit2.Text)) {сначала мы преобразовываем Editы в числа, а потом, чтобы все это вывести в Label , опять в строку}
end;
Если не понял, то можно все сделать по другому, это побольше, но проще(когда я был таким же как ты, я делал так, так легче:)

procedure Tform1.Button1Click(Sender: TObject);
var x,y,sum:integer; //объявляем переменные, два числа и их сумма
Begin
x:=StrToInt(Edit1.Text); //преобразовываем Едит1 в число
y:=StrToInt(Edit2.Text); //преобразовываем Едит2 в число
sum:=x+y; //вычисляем сумму
Label1.Caption:=StrToInt(Sum); // Выводим сумму в Лэйбл, преобразовав число в строку
end;
По-моему так, писал наспех, что неправильно, не моя вина, а клавиатуры;)

Короче, Жуй:)))

regards, Makswell

Отвечает Хобbeat

function inttostr(in: integer): string;

Хобbeat


С уважением, Angel(http://www.fordelphi.narod.ru)



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное