![]() |
|
|
#1
|
|||
|
|||
|
Здравствуйте я недавно начал заниматься програмированиев в дельфи вот хотел зделать чач через нитернет ознакомилмя с языком и инди но не получается выполнит ь передачу сообщения Delphi7 Indy9 Рууки проде не кривые
Код:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, IdTCPConnection, IdTCPClient, IdTelnet, idFTP, Menus,
OleCtrls, SHDocVw, IdBaseComponent, IdComponent, jpeg;
var
s : String;
key : Char;
i : integer;
s1 : String;
type
TForm2 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
edtMsg: TEdit;
Button1: TButton;
Label1: TLabel;
N5: TMenuItem;
Client: TIdTCPClient;
edtPort: TEdit;
edHost: TEdit;
timer1: TTimer;
memMsgs: TMemo;
lbl1: TLabel;
img1: TImage;
img2: TImage;
procedure SendClick(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure img1Click(Sender: TObject);
procedure img2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1, Unit4, Unit3;
{$R *.dfm}
procedure TForm2.SendClick(Sender: TObject);//Переход
begin
form2.hide;
form1.show;
end;
procedure TForm2.Button1Click(Sender: TObject); //Посылка сообщения
begin
if Key = #13 then
begin
s := edtMsg.Text + #10#13;
Key := #0;
edtMsg.Text := '';
Client.WriteBuffer(s[1], Length(s));
end;
end;
procedure TForm2.N2Click(Sender: TObject); //Переходы
begin
form1.hide;
form3.show;
end;
procedure TForm2.N3Click(Sender: TObject); //Выход из придлжения
begin
Application.Terminate;
end;
procedure TForm2.N5Click(Sender: TObject);//Логин + провекска статуса
begin
if Client.Connected then
Client.Disconnect
else
begin
Client.Host := edhost.text;
Client.Port := StrToIntDef(edtPort.Text, 8800);
edtPort.Text := IntToStr(Client.Port);
memMsgs.Lines.Clear;
Client.Connect;
end;
begin
if Client.Connected = True then
lbl1.Caption := 'Онлайн';
if Client.Connected = False then
lbl1.Caption := 'Оффлайн';
if Client.Connected = False then
Application.MessageBox('Связь с сервером QMessenger потеряна вам не будут приходть сообщения и вы не можете их писать ',
'Внимание!!!!', MB_OK + MB_ICONSTOP + MB_DEFBUTTON2);
end;
end;
procedure TForm2.timer1Timer(Sender: TObject);//Таймер
begin
if not Client.Connected then
exit;
I := 150;
if I > 0 then
begin
SetLength(s, i);
Client.ReadBuffer(s[1], i);
memMsgs.Lines.add(Copy(s, 1, Length(s) -2));
end;
end;
procedure TForm2.FormCreate(Sender: TObject);//Статус логина
begin
Form2.Caption := 'QMessenger - ' + Form1.login.Text + ' logged in!';
memMsgs.Lines.Clear;
edtMsg.Text := '';
if not Client.Connected then
exit;
end;
procedure TForm2.img1Click(Sender: TObject);//Смайлы
begin
edtMsg.Text:= edtMsg.Text + ':)';
end;
procedure TForm2.img2Click(Sender: TObject);
begin
edtMsg.Text:= edtMsg.Text + ':(';
end;
end. //Конец
Код:
Client.Host := edhost.text;
Client.Port := StrToIntDef(edtPort.Text, 8800);
edtPort.Text := IntToStr(Client.Port);
memMsgs.Lines.Clear;
Client.Connect;Програма зависает что делать помогите! Последний раз редактировалось lmikle, 18.08.2011 в 01:38. |
|
#2
|
|||
|
|||
|
Также подскажите как можно создать базу паролей и логинов через фтп у себя на компьютере таким образом чтоб когда пароль и лонгин вводить тебя пускало в программу только если данные верны...
|
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
|||
|
|||
|
хватит там уже про руки))) Лутше помог бы....
|
|
#6
|
|||
|
|||
|
а сервер-то у тебя "поднят"? А то при Timeout=0 ты долго будешь подключения ждать.
и еще - скачай и поставь Indy 10 - там много багов пофикшено по сравнению с 9кой. |
|
#7
|
|||
|
|||
|
я сейчас перезалил версию 0~24 я добился подключения коннектит выводит данные с сервера но не посылает сообщения с клиента хелп!
Ссылка Да поднят Я инди 10 не могу втыкнуть Не умею не давно начал учить этот язык где не смотрел как приткнуть не выходит |
|
#8
|
||||
|
||||
|
OFF: Вам бы русский язык подучить. Или хотя бы расположение букв на клавиатуре, чтоб по ним не промахиваться. Да и знаки препинания не помешает на клавиатуре найти...
|
|
#9
|
|||
|
|||
|
В таком случае, люди подскажите здесь мне помогут? Или будут исправлять орфографические ошибки ? Лучше помогите ......
|
|
#11
|
|||
|
|||
|
Дык, что бы помочь, нужно сначала вопрос понять. А, при оЧеПятках и отсутсвии знаков припинания, это очень тяжело.
Да, посылать сообщения в Indy надо через IOHandler. |
|
#12
|
|||
|
|||
|
Вот теперь новая головоломка...
По принципу файл должен открываться, считывать содержание, и при условии что сумма больше 0,25 он должен выполнять следующее: money:=0.25 - money; и сохранять в тотже файл + обновить label.capition и записать туда сумму money . Но при компиляции ругаеться на этот код Код:
label.capiton:=IntToStr(money); Полный код страницы Код:
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls, ZipForge;
type
TForm7 = class(TForm)
btn1: TButton;
lbl1: TLabel;
wb1: TWebBrowser;
btn2: TButton;
lbl2: TLabel;
tmr1: TTimer;
btn3: TButton;
zpfrg1: TZipForge;
lbl3: TLabel;
edt1: TEdit;
btn4: TButton;
procedure btn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure btn4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
money:Real;
f,money1: TextFile;
fName: String[80];
buf: string;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm7.btn1Click(Sender: TObject);
begin
if money > 0.25 then
begin
money:=0.25 - money;
AssignFile(money1,'C:\program files\qmessenger\res\temp\money.db');
Rewrite(money1);
Writeln(money1, money);
CloseFile(money1);
wb1.Show;
wb1.Navigate('http://www.mts.com.ua/rus/sendsms.php?sms_message=1&sms_network1=38066&sms_network2=&sms_network3=&sms_phone1=&sms_phone2=&sms_phone3=&sms_mess=QMessenger+%D2%E5%F1%F2%EE%E2%EE%E5+%F1%EE%EE%E1%F9%E5%ED%E8%E5%21&sms_translit=&sms_lang=rus#a');
end;
end;
procedure TForm7.FormCreate(Sender: TObject);
begin
fName := ('C:\program files\qmessenger\res\temp\money.db'); AssignFile(f, fName);
Reset(f);
{$I+}
if IOResult <> 0 then
begin
MessageDlg('Ошибка №1 ' + fName,
mtError, [mbOk], 0); exit;
end;
while not EOF(f) do
begin
readln(f, buf);
lbl3.Caption:=(buf);
end;
CloseFile(f);
try
zpfrg1.BaseDir := 'C:\program files\qmessenger\res\temp\';
zpfrg1.FileName:='C:\program files\qmessenger\mn.xlib';
zpfrg1.Password := '4577018';
zpfrg1.OpenArchive;
zpfrg1.ExtractFiles('*.*');
finally
zpfrg1.CloseArchive;
end;
wb1.Hide;
end;
procedure TForm7.btn2Click(Sender: TObject);
begin
form7.Hide;
form2.show;
end;
procedure TForm7.btn3Click(Sender: TObject);
begin
if money > 0.25 then
begin
money:=0.25 - money;
AssignFile(money1,'C:\program files\qmessenger\res\temp\money.db');
Rewrite(money1);
Writeln(money1, money);
CloseFile(money1);
wb1.Show;
wb1.Navigate('http://www.kyivstar.net/ru/sms/');
end;
end;
procedure TForm7.btn4Click(Sender: TObject);
begin
edt1.Text:=IntToStr(money);
end;
end.Последний раз редактировалось MR.HAKER, 20.08.2011 в 13:29. |
|
#13
|
||||
|
||||
|
Из сообщения непонятно чтоли?
Ф-я принимает параметр типа integer. |
|
#14
|
|||
|
|||
|
а без int to str uncomplitable types real and string
|
|
#15
|
||||
|
||||
|
Е**ный стыд.
У тебя переменная money типа real, а ты ее суешь в интеджер_ту_стринг, есс-но у тебя будет ошибка о несоответствии типов с ф-ей и без нее. Ты приди в банк и суй кассиру пачку туалетной бумаги, она тебя так же пошлет. Последний раз редактировалось M.A.D.M.A.N., 20.08.2011 в 16:53. |