Sms atmada mobiltim kullanma Projeye uygulama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen haydarxxx »

Slm arkadaşlar
Forumda sms diye aratırsanız 10 adet sayfa geliyor hepsini okudum.Ve bunu için gerekli servis sağlayıcıları aradım.Sorunum şu geliştirmiş olduğum projeye sms bölümü koyarak sms atmak istiyorum.Bunun için http://www.mobiltim.com i aradım ve gerekli bilgileri aldım.Bunu için siteden SMSClient programını indirdim.www.mobiltim.com bana Kullanıcı adı,Parola,Client kodu ve 33 test kontürü verdi yapmış oldukları SMSClient programı ile sms atabiliyorsunuz.(test olalarak).Sonra http://www.mobildev.net/sms_api.asp adresinden delphi için gerekli kaynak kodları indirdim
*sms_api_com_object_delphi kaynak kodu
*sms_api_xml_delphi kaynak kodu
*sms_api_interact_delphi kaynak kodu
ve sms_api_https_delphi kaynak kodu.Birtek sms_api_https_delphi kaynak kodu ile sms yollayabildim.Kaynak kodları şöyle

Kod: Tümünü seç

unit frm_httpornek;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  Tfrmhttpornek = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    StrHTTP:WideString;
    function HTTPSend(VarBody:WideString):WideString;
    function HTTPSendS(VarBody:WideString):WideString;
  end;

var
  frmhttpornek: Tfrmhttpornek;

const
  VK_LF:string = Chr(10);
  VK_CRLF:string = Chr(13)+Chr(10);
implementation

uses MSXML_TLB;

{$R *.dfm}

{ Tfrmhttpornek }

function Tfrmhttpornek.HTTPSend(VarBody: WideString): WideString;
var
  HTTPReq:TXMLHTTPRequest;
  POSTStr:WideString;
begin
  HTTPReq:=TXMLHTTPRequest.Create(Application);
  POSTStr:='http://gateway.mobilus.net/gateway.asp?' + VarBody;
  HTTPReq.Open('POST',POSTStr,false);
  HTTPReq.Send;
  HTTPSend:=HTTPReq.ResponseText;
  HTTPReq.Free;
end;

function Tfrmhttpornek.HTTPSendS(VarBody: WideString): WideString;
var
  HTTPReqS:TXMLHTTPRequest;
  POSTStrS:WideString;
begin
  HTTPReqS:=TXMLHTTPRequest.Create(Application);
  POSTStrS:='https://secure.mobilus.net/sms/gateway.asp?' + VarBody;
  HTTPReqS.Open('POST',POSTStrS,false);
  HTTPReqS.Send;
  HTTPSendS:=HTTPReqS.ResponseText;
  HTTPReqs.Free;
end;

procedure Tfrmhttpornek.Button1Click(Sender: TObject);
begin
  StrHTTP:='username=mobilin verdiği username&password=mobilin verdiği password &company=mobilin verdiği Client kodu &action=2';
  Memo1.Text:=HTTPSend(StrHTTP);
  Memo1.Text:=StringReplace(Memo1.Text,VK_LF,VK_CRLF,[rfReplaceAll]);
end;

procedure Tfrmhttpornek.Button2Click(Sender: TObject);
begin
 StrHTTP:='username=mobilin verdiği username&company=mobilin verdiği Client kodu &password=mobilin verdiği password &action=0&message=Deneme Mesajı&numbers=5054764858';
  Memo1.Text:=HTTPSend(StrHTTP);
end;

procedure Tfrmhttpornek.Button3Click(Sender: TObject);
begin
  StrHTTP:='username=mobilin verdiği username&company=mobilin verdiği Client kodu &password=mobilin verdiği password &action=1&msgid=2947582';
  Memo1.Text:=HTTPSend(StrHTTP);
  Memo1.Text:=StringReplace(Memo1.Text,VK_LF,VK_CRLF,[rfReplaceAll]);
end;

procedure Tfrmhttpornek.Button4Click(Sender: TObject);
begin
  StrHTTP:='username=mobilin verdiği username&password=mobilin verdiği password &company=mobilin verdiği Client kodu &action=2';
  Memo1.Text:=HTTPSendS(StrHTTP);
  Memo1.Text:=StringReplace(Memo1.Text,VK_LF,VK_CRLF,[rfReplaceAll]);
end;

procedure Tfrmhttpornek.Button5Click(Sender: TObject);
begin
  StrHTTP:='username=mobilin verdiği username&company=mobilin verdiği Client kodu &password=mobilin verdiği password &action=0&message=Deneme Mesajı&numbers=5054764858';
  Memo1.Text:=HTTPSendS(StrHTTP);
end;

procedure Tfrmhttpornek.Button6Click(Sender: TObject);
begin
  StrHTTP:='username=mobilin verdiği username&company=mobilin verdiği Client kodu &password=mobilin verdiği password &action=1&msgid=2947582';
  Memo1.Text:=HTTPSendS(StrHTTP);
  Memo1.Text:=StringReplace(Memo1.Text,VK_LF,VK_CRLF,[rfReplaceAll]);
end;

end.
Sorum şu böyle bir kodlamayı delphiye aktaracağım ama nerden başlayacağımı bilimiyorum.Veri tabanımda kayıtlı olan müşterileri seçerek döngü içine alıp kaynak kod içindeki gerekli yerlere tanımlama yaparak sms atmayı düşünüyorum.sms gönderme mantığı bu şekildemidir sizlerden bir fikir ve öneri isitiyorum.d7 ve Firebird vt kullanıyorum.mobildev servis sağlıyor gerekli bağlantı ve şifreleri test aşamasıda olsa veriyor. yani kendi kaynak kodlarından sms atabiliyorsun.Bunu projeme yansıtabilirsem becerebilirsek sözleşme yapacağım.Ama sms i projeme nasıl aktarmalıyım.Bu konuda tecrübesi olan arkadaşlar fikir verise sevinirim.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen Battosai »

Zaten kodlar verilmiş...http veya xml yönteminden birini seç....veritabanından bilgileri al sonra gönder gitsin dönen hata veya onay mesajına görede mesaj gitti yada gittimedi gitmediyse niye gitmede yazdırırsın bu kadar basit....bana bi kontör vermedilerdi denemek için :twisted: Neyse kontörsüz dene bak rasgele kullanıcı tanımla en azından hata mesajlarını alırsın....yalnız ben senin kodlardaki post komutunu kullanmıyorum idhttp ile yapıyorum...idhttp ve idantifrezee ile işlem sırasında programın donmasınıda engellemiş oluyorsun öteki türlü thread açman gerekir bence luzumsuz.....
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen haydarxxx »

Hocam teşekkür ediyorum.
dönen hata veya onay mesajına görede mesaj gitti yada gittimedi gitmediyse niye gitmede yazdırırsın bu kadar basit
nasıl yapılıyor.
xml konusunda hiç bilgim yok.o yüzden http yi seçtim
Şu an bu kodlarla sms atabiliyorum
Fakat şu konuda biraz daha bilgi verebilirmisiniz
yalnız ben senin kodlardaki post komutunu kullanmıyorum idhttp ile yapıyorum...idhttp ve idantifrezee ile işlem sırasında programın donmasınıda engellemiş oluyorsun öteki türlü thread açman gerekir bence luzumsuz.....
nasıl kullanıyor.Biraz daha açıklarmısınız.Nasıl bir düzenlemeye gitmeliyim bu aşamada.Teşekkürler
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen Battosai »

Kendi örneğimdeki kodu gönderiyorum...kodların yanına gerekli açıklamaları yazacağım...

Kod: Tümünü seç

var
i:integer;
PostText:TStringList;
sonuc:string;
begin
if Memo1.Text='' then
begin
MessageBox(Handle,'Mesajınız Boş.  ','Bilgi',MB_OK+MB_ICONINFORMATION);
exit;
end;
if NumberList.Items.Count<1 then
begin
MessageBox(Handle,'Numara listesinde mesajın gönderileceği en az 1 numara olmalıdır.','Bilgi',MB_OK+MB_ICONINFORMATION);
exit;
end;
number:=NumberList.Items.Strings[0];
gonderen:='gonderici';
for i:=1 to NumberList.Items.Count-1 do
begin
Number:=number+','+NumberList.Items.Strings[i];
end;
//Number değişkeni mesajın gideceği numaralırı tutar aralarına ',' koyarak döngü ile ayruyırum
//numaraları bir listbox'a atıyorum...istersen elle istersen döngü ile veritabanındaki numaraları listeye atabilirsin...
//kullanıcı bilgileri rastgele verilmiştir...
uname:='user1';
pass:='3528';
kod:='3256';
mesaj:=Memo1.Text;
try
VarBody:='username='+uname+'&password='+pass+'&company='+gonderen+'&action=0&message='+mesaj+'&numbers='+number;
  PostURL:='http://gateway.mobilus.net/gateway.asp?';
  try
  PostText:=TStringList.Create;
  PostText.Text:=VarBody;
  IdAntiFreeze1.Active:=True;
  sonuc:=IdHTTP1.Post(PostURL,PostText);
  ListBox1.Clear;//Listbox1 benim gönderim durumu ve hata bilgisini gösterdiğim listem...
  ListBox1.Items.Add('İşlem Raporu:');
  ListBox1.Items.Add('->'+DateToStr(date)+'-'+copy(TimeToStr(time),1,5));
  ListBox1.Items.Add('->Mesaj Gönderiliyor...');
  if sonuc='01' then // hata kodları firmanın verdiği bilgilerden alınmıştır pdf dosyası...
    begin
    ListBox1.Items.Add('->Mesaj İletilemedi !');
    ListBox1.Items.Add('->Açıklama:Hatalı kullanıcı adı – şifre – bayi kodu');
    end;
  if sonuc='02' then
   begin
    ListBox1.Items.Add('->Mesaj İletilemedi !');
    ListBox1.Items.Add('->Açıklama:Yetersiz kredi,Paket işlenmemiş ya da Gateway tarafında beklemede');
   end;
    if sonuc='04' then
   begin
    ListBox1.Items.Add('->Mesaj İletilemedi !');
    ListBox1.Items.Add('->Açıklama:Eksik parametre girişi');
   end;

  if sonuc='10' then
   begin
    ListBox1.Items.Add('->Mesaj İletilemedi !');
    ListBox1.Items.Add('->Tekrar Deneyiniz.');
   end;

   if (AnsiCompareText('3152005',sonuc)<0)or (AnsiCompareText('3152005',sonuc)=0) then
   begin
    ListBox1.Items.Add('->Mesajınız İletilmiştir.');
   end;
   
  finally
    PostText.Free;
    IdAntiFreeze1.Active:=False;
  end;
  except
  on E:Exception do
        begin
       MessageBox(handle,'Servis sağlayıcıya bağlanılamadı.'+#10#13+'İnternet bağlantınızı kontrol ediniz.'+#10#13+'Antivirüs programı kullanıyorsanız programın internete erişimine izin verin.','Hata',mb_ok+MB_ICONERROR);
        end;
   end;
Bu kod gayet güzel çalışıyor ama kaç tane numaraya gönderiliyor bilmek lazım xml ile 30000 numaraya kadar destek var http de bu rakam kısıtlıdır yanlış hatırlamıyorsam 150 civarıydı....xml fazla numara için daha iyidir....
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen haydarxxx »

İlginiz için tekrar teşekür ediyorum.Kodlarınızı aynen uyguladım ama şöyle bir ahata raporu alıyorum

Kod: Tümünü seç

İşlem Raporu
->Tarih
_>Mesaj gönderiliyor
->Mesaj iletilemedi
->Açıklma :Eksik parametre girişi
mobilus bana
Kullanıcı adı : **** //username tmm
Parola : ***** //pass tmm
Client kodu : ******* // company mi olacak
gibi üç tane numara verdi.Bu eksik parametre bunlardan mı kaynaklanıyor.

gonderen cep telefonuna gelen şirket adımı oluyor.

var blokunda

Kod: Tümünü seç

var
i:integer;
PostText:TStringList;
sonuc:string;
number,gonderen:string;
uname:string;
pass:string;
kod,mesaj:string;
VarBody ,posturl:string;
tanımladım doğrumudur.Eğer isterseniz özel mesaj bölümünden şifreleri size verebilirim denemeniz için.Yinede ben oluşturduğum kodu yazayım.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
PostText:TStringList;
sonuc:string;
number,gonderen:string;
uname:string;
pass:string;
kod,mesaj:string;
VarBody ,posturl:string;
begin
if Memo1.Text='' then
begin
MessageBox(Handle,'Mesajınız Boş.  ','Bilgi',MB_OK+MB_ICONINFORMATION);
exit;
end;
if NumberList.Items.Count<1 then
begin
MessageBox(Handle,'Numara listesinde mesajın gönderileceği en az 1 numara olmalıdır.','Bilgi',MB_OK+MB_ICONINFORMATION);
exit;
end;
number:=NumberList.Items.Strings[0];
gonderen:='Haydar yazılım';
for i:=1 to NumberList.Items.Count-1 do
begin
Number:=number+','+NumberList.Items.Strings[i];
end;
//Number değişkeni mesajın gideceği numaralırı tutar aralarına ',' koyarak döngü ile ayruyırum
//numaraları bir listbox'a atıyorum...istersen elle istersen döngü ile veritabanındaki numaraları listeye atabilirsin...
//kullanıcı bilgileri rastgele verilmiştir...
uname:='******';// mobilus verdiği kullanıcı adı
pass:='*****';//mobilus verdiği şifre 
kod:='*****';// mobilus verdiği Client kodu mu bunu anlamadım.Ve Kod la iligili bir satır geçmiyor kodlarınızda
mesaj:=Memo1.Text;
try
VarBody:='username='+uname+'&password='+pass+'&company='+gonderen+'&action=0&message='+mesaj+'&numbers='+number;
  PostURL:='http://gateway.mobilus.net/gateway.asp?';
  try
  PostText:=TStringList.Create;
  PostText.Text:=VarBody;
  IdAntiFreeze1.Active:=True;
  sonuc:=IdHTTP1.Post(PostURL,PostText);
  ListBox1.Clear;//Listbox1 benim gönderim durumu ve hata bilgisini gösterdiğim listem...
  ListBox1.Items.Add('İşlem Raporu:');
  ListBox1.Items.Add('->'+DateToStr(date)+'-'+copy(TimeToStr(time),1,5));
  ListBox1.Items.Add('->Mesaj Gönderiliyor...');
  if sonuc='01' then // hata kodları firmanın verdiği bilgilerden alınmıştır pdf dosyası...
    begin
    ListBox1.Items.Add('->Mesaj İletilemedi !');
    ListBox1.Items.Add('->Açıklama:Hatalı kullanıcı adı – şifre – bayi kodu');
    end;
  if sonuc='02' then
   begin
    ListBox1.Items.Add('->Mesaj İletilemedi !');
    ListBox1.Items.Add('->Açıklama:Yetersiz kredi,Paket işlenmemiş ya da Gateway tarafında beklemede');
   end;
    if sonuc='04' then
   begin
    ListBox1.Items.Add('->Mesaj İletilemedi !');
    ListBox1.Items.Add('->Açıklama:Eksik parametre girişi');
   end;

  if sonuc='10' then
   begin
    ListBox1.Items.Add('->Mesaj İletilemedi !');
    ListBox1.Items.Add('->Tekrar Deneyiniz.');
   end;

   if (AnsiCompareText('3152005',sonuc)<0)or (AnsiCompareText('3152005',sonuc)=0) then
   begin
    ListBox1.Items.Add('->Mesajınız İletilmiştir.');
   end;
   
  finally
    PostText.Free;
    IdAntiFreeze1.Active:=False;
  end;
  except
  on E:Exception do
        begin
       MessageBox(handle,'Servis sağlayıcıya bağlanılamadı.'+#10#13+'İnternet bağlantınızı kontrol ediniz.'+#10#13+'Antivirüs programı kullanıyorsanız programın internete erişimine izin verin.','Hata',mb_ok+MB_ICONERROR);
        end;
   end;
   end;
Size zahmet bir bakarmısınız.Nereyi yanlış giriyorum.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen Battosai »

pardon xml gönderiminden kalmış bir kod..company yazan yere onların verdiği bir kod var örnekte mb1000 diye geçiyor eğer sana verdikleri buysa oraya bu kodu yazacaksın....

Kod: Tümünü seç

'username=test&password=89tr34&company=mb1000&action=2';
gibi....
yani gondren olayı iptal onu kaldırabilirsin... bu gönderen dediğim origanator diye geçiyor en fazla 11 karaktirli olan...ama http ile yollanırken girilmiyor anlaşılan....yani sen gonderen değişkenine bu mb1000 gibi olan kodu gir....ayrıca sen şifreleri üye olarak mı aldın yoksa deneme amaçlımı verildi.....
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen haydarxxx »

ayrıca sen şifreleri üye olarak mı aldın yoksa deneme amaçlımı verildi.....
Hocam su aşamada test olarak olarak aldım yani deneme amaçlı bu denemede mobilin verdiği kodla sms atıyor yani.Test de bir sorun yok yani 33 kontürüm var deneme yapmak için.Tmm dersem bayiliğini alacağım yani kontür yükleme olacak sonra.Bu arda 24 kontürüm kaldı :lol:

Sizin dediğinizide yaptım ama aynı hatayı alıyorum.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
PostText:TStringList;
sonuc:string;
number,company:string;
uname:string;
pass:string;
kod,mesaj:string;
VarBody ,posturl:string;
begin
if Memo1.Text='' then
begin
MessageBox(Handle,'Mesajınız Boş.  ','Bilgi',MB_OK+MB_ICONINFORMATION);
exit;
end;
if NumberList.Items.Count<1 then
begin
MessageBox(Handle,'Numara listesinde mesajın gönderileceği en az 1 numara olmalıdır.','Bilgi',MB_OK+MB_ICONINFORMATION);
exit;
end;
number:=NumberList.Items.Strings[0];
for i:=1 to NumberList.Items.Count-1 do
begin
Number:=number+','+NumberList.Items.Strings[i];
end;
//Number değişkeni mesajın gideceği numaralırı tutar aralarına ',' koyarak döngü ile ayruyırum
//numaraları bir listbox'a atıyorum...istersen elle istersen döngü ile veritabanındaki numaraları listeye atabilirsin...
//kullanıcı bilgileri rastgele verilmiştir...
uname:='denemetest';
pass:='xxxf2xxx';
company:='mb1000';
mesaj:=Memo1.Text;
try
VarBody:='username='+uname+'&password='+pass+'&company='+company+'&action=0&message='+mesaj+'&numbers='+number;
  PostURL:='http://gateway.mobilus.net/gateway.asp?';
  try
  PostText:=TStringList.Create;
  PostText.Text:=VarBody;
  IdAntiFreeze1.Active:=True;
  sonuc:=IdHTTP1.Post(PostURL,PostText);
  ListBox1.Clear;//Listbox1 benim gönderim durumu ve hata bilgisini gösterdiğim listem...
  ListBox1.Items.Add('İşlem Raporu:');
  ListBox1.Items.Add('->'+DateToStr(date)+'-'+copy(TimeToStr(time),1,5));
  ListBox1.Items.Add('->Mesaj Gönderiliyor...');
  if sonuc='01' then // hata kodları firmanın verdiği bilgilerden alınmıştır pdf dosyası...
    begin
    ListBox1.Items.Add('->Mesaj İletilemedi !');
    ListBox1.Items.Add('->Açıklama:Hatalı kullanıcı adı – şifre – bayi kodu');
    end;
  if sonuc='02' then
   begin
    ListBox1.Items.Add('->Mesaj İletilemedi !');
    ListBox1.Items.Add('->Açıklama:Yetersiz kredi,Paket işlenmemiş ya da Gateway tarafında beklemede');
   end;
    if sonuc='04' then
   begin
    ListBox1.Items.Add('->Mesaj İletilemedi !');
    ListBox1.Items.Add('->Açıklama:Eksik parametre girişi');
   end;

  if sonuc='10' then
   begin
    ListBox1.Items.Add('->Mesaj İletilemedi !');
    ListBox1.Items.Add('->Tekrar Deneyiniz.');
   end;

   if (AnsiCompareText('3152005',sonuc)<0)or (AnsiCompareText('3152005',sonuc)=0) then
   begin
    ListBox1.Items.Add('->Mesajınız İletilmiştir.');
   end;
   
  finally
    PostText.Free;
    IdAntiFreeze1.Active:=False;
  end;
  except
  on E:Exception do
        begin
       MessageBox(handle,'Servis sağlayıcıya bağlanılamadı.'+#10#13+'İnternet bağlantınızı kontrol ediniz.'+#10#13+'Antivirüs programı kullanıyorsanız programın internete erişimine izin verin.','Hata',mb_ok+MB_ICONERROR);
        end;
   end;
   end;
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen Battosai »

iyide haydarxx ben mb1000 olayını onların örneğinden aldım göstermek amaçlı :D yani bununla atarsın demedim....bence sen onlara bir sor eğer sana böyle bir kod vermedilerse....
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen haydarxxx »

:) doğru dersin.Hocam başarabilmeme çok az kaldı.Yani listboxtaki telefon numaralarına sms i atacağım ama sizin verdiğiniz telefon numaraların arasına kodla virgül atarak birden fazla telefona sms atamıyorum.Virgül olayını kaldırdım bunun yerine listboxtaki telefonları döngü içine almayı düşündüm fakat listbox ı döngüye sokmayı beceremedim.

Kod: Tümünü seç

function TForm40.HTTPSend(VarBody: WideString): WideString;
var
  HTTPReq:TXMLHTTPRequest;
  POSTStr:WideString;
begin
  HTTPReq:=TXMLHTTPRequest.Create(Application);
  POSTStr:='http://gateway.mobilus.net/gateway.asp?' + VarBody;
  HTTPReq.Open('POST',POSTStr,false);
  HTTPReq.Send;
  HTTPSend:=HTTPReq.ResponseText;
  HTTPReq.Free;
end;

Kod: Tümünü seç

var
i:integer;
Number:string;
begin
if Memo2.Text='' then
begin
MessageBox(Handle,'Mesajınız Boş.  ','Bilgi',MB_OK+MB_ICONINFORMATION);
exit;
end;
if  ListBox1.Items.Count<1 then
begin
MessageBox(Handle,'Numara listesinde mesajın gönderileceği en az 1 numara olmalıdır.','Bilgi',MB_OK+MB_ICONINFORMATION);
exit;
end;
for i:=1 to ListBox1.Items.Count-1 do
begin
Number:=ListBox1.Items.Strings[i];
end;
//  gönderim
 StrHTTP:='username=xxxx&company=mb1000&password=xxxx&action=0&message='+memo2.Text+'&numbers='+Number;
  Memo1.Text:=HTTPSend(StrHTTP);
  //  gönderim
burada listbox1 i nasıl döngüye sokabiliriz.şu anda bu kodla atabiliyorum fakat listboxın en son items indeki numaraya gidiyor.

bu kodların altına aşağıdaki kod u eklemek istiyorum ama düzenleyemedim kendime göre.
sonuç ve PostText i ayarlamadım

Kod: Tümünü seç

 IdAntiFreeze1.Active:=True;
ListBox2.Clear;//ListBox2 benim gönderim durumu ve hata bilgisini gösterdiğim listem...
  ListBox2.Items.Add('İşlem Raporu:');
  ListBox2.Items.Add('->'+DateToStr(date)+'-'+copy(TimeToStr(time),1,5));
  ListBox2.Items.Add('->Mesaj Gönderiliyor...');
  if sonuc='01' then // hata kodları firmanın verdiği bilgilerden alınmıştır pdf dosyası...
    begin
    ListBox2.Items.Add('->Mesaj İletilemedi !');
    ListBox2.Items.Add('->Açıklama:Hatalı kullanıcı adı – şifre – bayi kodu');
    end;
  if sonuc='02' then
   begin
    ListBox2.Items.Add('->Mesaj İletilemedi !');
    ListBox2.Items.Add('->Açıklama:Yetersiz kredi,Paket işlenmemiş ya da Gateway tarafında beklemede');
   end;
    if sonuc='04' then
   begin
    ListBox2.Items.Add('->Mesaj İletilemedi !');
    ListBox2.Items.Add('->Açıklama:Eksik parametre girişi');
   end;

  if sonuc='10' then
   begin
    ListBox2.Items.Add('->Mesaj İletilemedi !');
    ListBox2.Items.Add('->Tekrar Deneyiniz.');
   end;

   if (AnsiCompareText('3152005',sonuc)<0)or (AnsiCompareText('3152005',sonuc)=0) then
   begin
    ListBox2.Items.Add('->Mesajınız İletilmiştir.');
   end;
   
  finally
    PostText.Free;
    IdAntiFreeze1.Active:=False;
  end;
  except
  on E:Exception do
        begin
       MessageBox(handle,'Servis sağlayıcıya bağlanılamadı.'+#10#13+'İnternet bağlantınızı kontrol ediniz.'+#10#13+'Antivirüs programı kullanıyorsanız programın internete erişimine izin verin.','Hata',mb_ok+MB_ICONERROR);
        end;
   end;
   end;
end;
kodları düzenlemede yardımcı olabilirmisiniz.Number yerine sırayla listbox taki numaraları getirebilirsem olacak gibi. :|
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen Battosai »

herhangi birşeyi değiştirmen gerekmiyor....listbox'daki telefon numarası sayısı 150 yi geçmezse ve kontör sayında yeterli ise 150 tane numaraya atabilirsin benim verdiğim kod ile...sen nasıl bir döngü yapmak istiyorsun yoksa tahmin ettiğim şeyi tek tek yollamaya mı kalkıyorsun hiç uğraşma yapılacak en mantıksız çözümdür ve programını kitler....
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen haydarxxx »

Hayır hocam tek tek atmak istemiyorum

Kod: Tümünü seç

for i:=1 to ListBox1.Items.Count-1 do
begin
Number:=Number+','+ListBox1.Items.Strings[i];
end;
//  gönderim
StrHTTP:='username=xxxx&company=mb1000&password=xxxx&action=0&message='+memo2.Text+'&numbers='+Number;
  Memo1.Text:=HTTPSend(StrHTTP);
şeklinde idi yani numaraların arasına virgiül koyarak atma yapıyor fakat bu kod çalışmadı.Bende listbox içindeki itemsleri döngü ile alarak Number olan yere yazsın istiyorum listbox ı döngüye sokmak isityorum ama beceremedim.Şunun gibi

Kod: Tümünü seç

for i:=1 to ListBox1.Items.Count-1 do
begin
Number:=ListBox1.Items.Strings[i];
end;
//  gönderim
StrHTTP:='username=xxxx&company=mb1000&password=xxxx&action=0&message='+memo2.Text+'&numbers='+Number;
  Memo1.Text:=HTTPSend(StrHTTP);
 listbox.items.next;//buraya ne yazılır onu soruyorum next döngüsü için 
fakat burada ListBox1 i next yapamıyorum.Yani 0. items i attıktan sonra 1. items sonra 2.3.4...... gibi.Listbox daki veriler döngüye girecek kısacası

Bir ikincisi Listboxtaki

Kod: Tümünü seç

StrHTTP:='username=xxxx&company=mb1000&password=xxxx&action=0&message='+memo2.Text+'&numbers='+Number;
  Memo1.Text:=HTTPSend(StrHTTP);[/
bu kodlardan sonra sizin yaptığınız hata yada ileti raporunu yazmak isiyorum.ama nasıl yazılacak bilemiyorum
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen Battosai »

haydarxxx bu iş uzadı baya...şimdi biraz kızacağım sana :twisted: Benim örnekte ne yapılıyor? listboxdaki numaraları aralarına virgül koyarak bir değişkene atıyorum dolayısıyla bu numaralar gönderilecek numaralar oluyor...firmanın pdf dosyasını hiç incelememişsin anlaşılan aralarına virgül koyarak numaralara mesaj gönderiyorsun.....
https://secure.mobilus.net/sms/gateway. ... mpany=mb10
34&action=0&message=Deneme&numbers=5327654321,5427654321,5557654321
gibi olmalı.....ben kendi örneğimin numara çıktısını nasıl olduğunu biliyorum bir sıkıntı yok....eğer işlemin hata veriyorsa hata mesajını da yazarsan daha iyi olur...ayrıca unutma en fazla 150 mesaj olduğu için pek kullanışlı bir metot değil.Aşağıya xml örneğini atıyorum yapmışken tam olsun bari....
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen Battosai »

İşte XML örneği bir seferde tam 30.000 kişiye mesaj atabilirsin....
Function SendXML(PostURL:string;XMLText:WideString):String;
var
sResponse: String;
fsParams: TStringList;
http:TIdHTTP;
HANDLE:integer;
begin
try
try
fsParams :=TStringList.Create;
http:=TIdHTTP.Create(nil);
fsParams.Text:=XMLText;
http.Request.ContentType := 'text/xml';
sResponse :=http.Post(PostURL,fsParams);
Result:=sResponse;
Finally
fsParams.Free;
http.Free;
end;
except
on E: Exception do begin
Result:='';
MessageBox(HANDLE,pchar('Hata ->'+ E.Message),'Hata',MB_OK+MB_ICONERROR);
end;
end;
end;
var
i:integer;
sonuc:string;
begin
if Memo1.Text='' then
begin
MessageBox(Handle,'Mesajınız Boş. ','Bilgi',MB_OK+MB_ICONINFORMATION);
exit;
end;
if NumberList.Items.Count<1 then
begin
MessageBox(Handle,'Numara listesinde mesajın gönderileceği en az 1 numara olmalıdır.','Bilgi',MB_OK+MB_ICONINFORMATION);
exit;
end;
number:=NumberList.Items.Strings[0];
gonderen:='gonderici';
for i:=1 to NumberList.Items.Count-1 do
begin
Number:=number+','+NumberList.Items.Strings;
end;
uname:='user1';
pass:='3528';
kod:='3256';
mesaj:=Memo1.Text;
try
strXML:='<MainmsgBody>'+
'<UserName>'+uname+'-mb'+kod+'</UserName>'+
'<PassWord>'+pass+'</PassWord>'+
'<Action>0</Action>'+
'<Mesgbody>'+mesaj+'</Mesgbody>'+
'<Numbers>'+number+'</Numbers>'+
'<Originator>'+gonderen+'</Originator>'+
'<SDate></SDate>'+
'</MainmsgBody>';
screen.Cursor:=crHourGlass;
ListBox1.Clear;
ListBox1.Items.Add('İşlem Raporu:');
ListBox1.Items.Add('->'+DateToStr(date)+'-'+copy(TimeToStr(time),1,5));
sonuc:=Trim(SendXML('http://gateway.mobilus.net/com.mobilus',strXML));
if sonuc='' then
begin
ListBox1.Items.Add('->Mesaj İletilemedi !');
ListBox1.Items.Add('->Açıklama:Bağlantı zaman aşımı');
end;
if sonuc='01' then
begin
ListBox1.Items.Add('->Mesaj İletilemedi !');
ListBox1.Items.Add('->Açıklama:Hatalı kullanıcı adı – şifre – bayi kodu');
end;
if sonuc='02' then
begin
ListBox1.Items.Add('->Mesaj İletilemedi !');
ListBox1.Items.Add('->Açıklama:Yetersiz kredi,Paket işlenmemiş ya da Gateway tarafında beklemede');
end;
if sonuc='04' then
begin
ListBox1.Items.Add('->Mesaj İletilemedi !');
ListBox1.Items.Add('->Açıklama:Eksik parametre girişi');
end;
if sonuc='05' then
begin
ListBox1.Items.Add('->Mesaj İletilemedi !');
ListBox1.Items.Add('->Açıklama:Hatalı parametre girişi');
end;
if sonuc='06' then
begin
ListBox1.Items.Add('->Mesaj İletilemedi !');
ListBox1.Items.Add('->Açıklama:Tanımsız Originator bilgisi');
end;

if sonuc='10' then
begin
ListBox1.Items.Add('->Mesaj İletilemedi !');
ListBox1.Items.Add('->Tekrar Deneyiniz.');
end;

if (AnsiCompareText('3152005',sonuc)<0)or (AnsiCompareText('3152005',sonuc)=0) then
begin
ListBox1.Items.Add('->Mesajınız İletilmiştir.');
end;
screen.Cursor:=crDefault;
except
on E:Exception do
begin
screen.Cursor:=crDefault;
MessageBox(handle,'Servis sağlayıcıya bağlanılamadı.'+#10#13+'İnternet bağlantınızı kontrol ediniz.'+#10#13+'Antivirüs programı kullanıyorsanız programın internete erişimine izin verin.','Hata',mb_ok+MB_ICONERROR);
end;
end;
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen haydarxxx »

Hocam yardımlarınız için çoook teşekkür ediyorum.Umarım halledebilceğim.Çok sağolasın
khanco
Üye
Mesajlar: 226
Kayıt: 01 Eki 2007 04:39
Konum: İzmir
İletişim:

Re: Sms atmada mobiltim kullanma Projeye uygulama

Mesaj gönderen khanco »

mobiltimde müşteriye kontör sattığınızda kontör faturasını kim kesiyor.(şebeke-mobiltim-program üretici-bayi)
Cevapla