Cxgridin bir sütununu stringliste kopyalama-Sms(Çözüldü)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Cxgridin bir sütununu stringliste kopyalama-Sms(Çözüldü)

Mesaj gönderen eyalin »

Herkese kolay gelsin. Benim sorunum Cxgridin bir sütununu(Gsm numaraları olan bir alanı) stringliste aralarına "," koyarak kopyalamayı (haftabaşı olduğundanmıdır yoksa benim bilgisizliğim ve beceriksizliğim midir -belkide hepsi :) ) yapamadım bir türlü. Ya da datasetin bir fieldını kullanarak Mobildevin xml altyapısını kullanarak sms atabilen arkadaşlar varsa yardımlarını rica ediyorum. Daha öncede bu konu tartışılmış ama listbox üzerinde yoğunlaşılmış. Bu konuda yardımcı olacak arkadaşlar varsa sevinirim. Hepinize güzel bir hafta dilerim.İyi çalışmalar.
En son eyalin tarafından 18 Ağu 2009 02:51 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Cxgridin bir sütununu stringliste kopyalama-Sms

Mesaj gönderen eyalin »

Kod: Tümünü seç

procedure Tfrmyarin.btnsmsgonderClick(Sender: TObject);
var
i,j:integer;
sonuc,number,mesaj,uname,pass,kod:string;
numberlist:TStringList;
//numaralar:TListBox;
begin
if hatirlatma1.DataController.RecordCount<1 then
  begin
  MessageBox(Handle,'Hatırlatma gönderilecek kayıt bulunmamaktadır. ','Bilgi',MB_OK+MB_ICONINFORMATION);
  exit;
  end;
numberlist:=TStringList.Create;
for j :=0  to hatirlatma1.ViewData.RecordCount-1 do
 begin
 numberlist.Add(hatirlatma1.ViewData.Records[j].Values[hatirlatma1.GetColumnByFieldName('Gsm').Index]);//Access violation
 End;
number:=numberlist.Strings[0];
  for i := 0 to numberlist.Count-1 do
  begin
  Number:=number+','+numberlist.Strings[i];
  numberlist.Free;
  end;
Üstte sorduğum soruya paralel olarak birşeyler yapmaya çalışıyorum.Access violation hatası burda neden oluşuyor acaba?Kolay gelsin.
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Cxgridin bir sütununu stringliste kopyalama-Sms

Mesaj gönderen eyalin »

Aşağıdaki kod değişikliği ile çalıştı.Şu an sorun yok.

Kod: Tümünü seç

numberlist:=TStringList.Create;
for j :=0  to hatirlatma1.DataController.RecordCount-1 do
 begin
 numberlist.Add(hatirlatma1.ViewData.Records[j].Values[hatirlatma1.Columns[4].index]);
 End;
number:=numberlist.Strings[0];
  for i := 1 to numberlist.Count-1 do
  begin
  Number:=number+','+numberlist.Strings[i];
end;
Ben en güzeli mobildev xml apisi ile cxgridten verileri alıp sms atmayı tamamen yazayım belki ihtiyacı olan arkadaşlar olur.
Bu kodu battosai arkadaşımız bir konuda yazmıştı.Ben sadece listbox kullanmak yerine,cxgridteki alanı stringliste aktararak sms atmış oldum. Battosai'ye ve okuyan arkadaşlara teşekkürler.

Kod: Tümünü seç

procedure Tfrmyarin.btnsmsgonderClick(Sender: TObject);
var
i,j:integer;
sonuc,number,uname,pass,kod:string;
numberlist:TStringList;
//numaralar:TListBox;
begin
  try
if hatirlatma1.DataController.RecordCount<1 then
  begin
  MessageBox(Handle,'Hatırlatma gönderilecek kayıt bulunmamaktadır. ','Bilgi',MB_OK+MB_ICONINFORMATION);
  exit;
  end;
numberlist:=TStringList.Create;
for j :=0  to hatirlatma1.DataController.RecordCount-1 do
 begin
 numberlist.Add(hatirlatma1.ViewData.Records[j].Values[hatirlatma1.Columns[4].index]);
 End;
number:=numberlist.Strings[0];
  for i := 1 to numberlist.Count-1 do
  begin
  Number:=number+','+numberlist.Strings[i];
  end;
uname:='Mobildev_kullanici_adiniz';
pass:='Mobildev_Password';
kod:='Mobildev_kod';
strXML:='<MainmsgBody>'+
  '<UserName>'+uname+'-mb'+kod+'</UserName>'+
  '<PassWord>'+pass+'</PassWord>'+
  '<Action>0</Action>'+
  '<Mesgbody>Yarin randevunuz saat '+TimeToStr(hatirlatma1Tarih.EditValue)+'olarak kaydedilmiştir.Iyi gunler dileriz.''</Mesgbody>'+
  '<Numbers>'+number+'</Numbers>'+
  '<Originator></Originator>'+
  '<SDate></SDate>'+
  '</MainmsgBody>';
ShowMessage(strXml);
screen.Cursor:=crHourGlass;
  cxListBox1.Clear;
  cxListBox1.Items.Add('İşlem Raporu:');
  cxListBox1.Items.Add('->'+DateToStr(date)+'-'+copy(TimeToStr(time),1,5));
  sonuc:=Trim(smsgonder('http://gateway.mobilus.net/com.mobilus',strXML));
  numberlist.Clear;
  numberlist.Free;
  if sonuc='' then
  begin
  cxListBox1.Items.Add('->Mesaj İletilemedi !');
  cxListBox1.Items.Add('->Açıklama:Bağlantı zaman aşımı');
  end;
  if sonuc='01' then
  begin
  cxListBox1.Items.Add('->Mesaj İletilemedi !');
  cxListBox1.Items.Add('->Açıklama:Hatalı kullanıcı adı – şifre – bayi kodu');
  end;
  if sonuc='02' then
  begin
  cxListBox1.Items.Add('->Mesaj İletilemedi !');
  cxListBox1.Items.Add('->Açıklama:Yetersiz kredi,Paket işlenmemiş ya da Gateway tarafında beklemede');
  end;
  if sonuc='04' then
  begin
  cxListBox1.Items.Add('->Mesaj İletilemedi !');
  cxListBox1.Items.Add('->Açıklama:Eksik parametre girişi');
  end;
  if sonuc='05' then
  begin
  cxListBox1.Items.Add('->Mesaj İletilemedi !');
  cxListBox1.Items.Add('->Açıklama:Hatalı parametre girişi');
  end;
  if sonuc='06' then
  begin
  cxListBox1.Items.Add('->Mesaj İletilemedi !');
  cxListBox1.Items.Add('->Açıklama:Tanımsız Originator bilgisi');
  end;

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

  if (AnsiCompareText('3152005',sonuc)<0)or (AnsiCompareText('3152005',sonuc)=0) then
  begin
  cxListBox1.Items.Add('->Mesajınız İletilmiştir.');
  end;
  screen.Cursor:=crDefault;
  except
  on E:Exception do
    begin
    screen.Cursor:=crDefault;
    ShowMessage(e.Message);
    //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;
Cevapla