Показать сообщение отдельно
Старый 03.10.2008, 14:07   #15
Kurdt
ПроЭктировщик
 
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений
(для 25 пользователей)
Re: интересные исходники или идеи реализации в MP

тоже выложу, мож кому интиресно будет увидеть как работает програмка работает по шттп с сервером.

program CrazySMS;
uses m2,thread,sms,ui;
//**********************************************************
const
updatesrv = 'http://www.crazysms.ru/update/';  		//Адрес сервера с обновлением
JadUrl =  'http://www.crazysms.ru/update/CrazySMS.jad';	//Адрес сервера с обновлением
updatesrvOK =  'http://www.crazysms.ru/sys/isokpaysms.php';
Pversion  =4; // версия програмі
//**********************************************************
type Tsmspay = record
			smsN:string;
			opisanie:string;
			cantry:integer;
			end;
			
		 Tcoolsms = record
			ot,text:string;
			end;

//**********************************************************
Var Imglogo,Imgicon,Imginvite:image;
			otkogo,komu,smskod,smstekst,smsID:string;
			typefrom:integer;// тип от кого 0 - номер телефона - 1 тексntrcn
			translit:integer;
			
			U:array[0..255] of string;
			  ar1: array[1..33] of string ;//rus2lat
					ar2: array[1..33] of string ;//rus2lat
					stopthread:boolean;
					mainmenuI:integer;
					imA:array[1..10] of image;

coolsms:array[1..100] of Tcoolsms;
coolsmsN:integer;

smspay:array[1..20] of Tsmspay;
countries:array[1..5] of string;
smspayN:integer;
//**********************************************************
//**********************************************************
//**********************************************************
//**********************************************************
//**********************************************************


function Str2UTF8(s: string):string;
var i: integer; a : string;
begin
a:='';
for i:= 0 to Length(s) do
if GetChar(s, i) > '~' then a:= a + Chr(Ord(GetChar(s, i)) - 64432)
else a:= a + GetChar(s, i);
Str2UTF8:= Copy(a, 0, Length(a)-1);
end;


//**********************************************************
Function ResToString(resurs:string):string;
var
res:resource;
line:string;
Buf:string;
Begin
res:=OpenResource('/'+resurs);
if(resourceAvailable(res))then
	begin
		line:=ReadLine(res);
		while line<>'END'do
		begin
			Buf:=buf+Str2UTF8(line)+chr(10);
			
			line := ReadLine(res);
			end;
			CloseResource(res);
		end;
	///		DrawText('тест'+Buf,0,30);repaint;delay(1500);
ResToString:=Buf;
end;

//**********************************************************



// сохранить значение в хранилище
Procedure pssave(tostore,storedata:string);
var
rs:recordstore;
idx,size:integer;
Begin
rs:=openrecordstore(tostore);
size:=GetRecordStoreSize(rs);

if size=0 then 
idx:=addrecordstoreentry(rs,storedata) else
modifyrecordstoreentry(rs,storedata,1);
closerecordstore(rs);
end;

//**********************************************************
// сохраняем данные в хранилище
Procedure saveStore();
Begin

pssave('otkogo',(otkogo));
pssave('smskod',(smskod));
pssave('smstekst',smstekst);
end;
//**********************************************************

//Чтение хранилища данных
Function readStore:boolean;
var
rs:recordstore;
buf:string;
idx,size:integer;
begin

rs:=openrecordstore('otkogo');
readStore:=false;
size:=GetRecordStoreSize(rs);
if size=0 then readStore:=true
	Else otkogo:=(readrecordstoreentry(rs,1));
closerecordstore(rs);


rs:=openrecordstore('smskod');
readStore:=false;
size:=GetRecordStoreSize(rs);
if size=0 then readStore:=true
	Else smskod:=(readrecordstoreentry(rs,1));
closerecordstore(rs);

rs:=openrecordstore('smstekst');
readStore:=false;
size:=GetRecordStoreSize(rs);
if size=0 then readStore:=true
	Else smstekst:=(readrecordstoreentry(rs,1));
closerecordstore(rs);

end;

//**********************************************************
procedure clrscr;//очищение экрана
begin
	setcolor(255,255,255);
	fillRect(0, 0,getWidth  , getHeight);
end;
//**********************************************************
// перевуод в кодировку урл
function HTTPTran(St: string): string;
var
  i,n: Integer;
  s:string;
  ch:char;
begin
n:=0;
for i:=0 to length(st)-1do 
			begin
			ch:=getChar(st,i);
			n:=ord(ch);
			if n>850 then n:=n-848;
		  s:=s+u[n];
			end;
		HTTPTran:=s;
end;

//**********************************************************
function rus2lat(Str: string): string;
const
  RArrayL = 'абвгдеёжзийклмнопрстуфхцчшщьыъэюя';
  RArrayU = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ';
  colChar = 33;
 var
  i,i2: Integer;
  LenS: Integer;
  result,ch:string;
  ok:boolean;
Begin
result := '';
  LenS := length(str);
  ok:=false;
  for i := 0 to lenS-1 do
  begin
  ch:=getChar(str,i);
	for i2:= 1 to colChar do
		begin		
			
			
			if (ch=getChar(RArrayL,i2))and(not ok) then begin ok:=true; result:=result+ar1[i2+1];end;
			if (ch=getChar(RArrayU,i2))and(not ok) then begin ok:=true; result:=result+ar2[i2+1];end
			
		end;
			if (not ok) then begin
  If (ch<>'а') and (ch<>'А')and (ch<='я') then  result:=result+ch
  else If (ch='а') then result:=result+'a' else If (ch='А') then result:=result+'A'
  
  end;
		ok:=false;

  end;
 rus2lat:= result;

end;

//**********************************************************

//загрузка
Procedure Splash;
Var i,k,ii:integer;
m:image;
Begin
 showCanvas;  
clrscr;
     


DrawImage(Imglogo, (getWidth-96)/2, (getHeight-82)/2);

{
for i:= 1 to 10 do begin
setcolor(90-i*5,90-i*5,90-i*5);
DrawRect(i,i,getWidth-10,getHeight-10);
			end;
}

repaint;
end;  
//**********************************************************
//конец загрузки
Procedure SplashEnd;
Var i,k,ii:integer;
m:image;
Begin   
i:=1;
ii:=10;
DrawImage(Imglogo, (getWidth-96)/2, (getHeight-82)/2);
repeat
 
i:=i+ii;
if (i>=245)or(i<=10)  then ii:=ii*(-1);
if ii>0 then setcolor(i,i,255-i)
	else setcolor(i,255-i,i);

drawText('Нажмите любую', (getWidth - getStringWidth('Нажмите любую' ))/2,((getHeight-getStringHeight('Нажмите любую'))/2)+50);
if ii<0 then setcolor(i,i,255-i)
	else setcolor(i,255-i,i);
drawText('кнопку', (getWidth - getStringWidth('кнопку'))/2,((getHeight-getStringHeight('кнопку'))/2)+50+getStringHeight('кнопку'));

k:=getkeypressed;
delay(trunc(i/5));
delay(30);

repaint;
until k<>KE_NONE;

randomize;
clrscr;
end;
//**********************************************************
Procedure createOkCommand;
var play, click , play2: command;
Begin

 play := createCommand('Ок', CM_OK, 1);      
  play2 := createCommand('', CM_CANCEL   , 1); 
    addCommand(play2);
    addCommand(play); 
click:= emptyCommand;
 
    repeat  
    click:=getClickedCommand;
        delay(100); 
     until (click =play);
    

End;
//**********************************************************
Procedure showmessage(title,kontent:string);
var img:image;
Begin
showAlert(title,  //Доступна новая версия программы, хотите ли вы ее загрузить прямо сейчас?';
              kontent, 
              img,//Imginvite,//LoadImage('/logo2.png'),  
              ALERT_INFO);  
              
              
        createOkCommand;    

showform;  

End;
//**********************************************************



// Форма загрузки нового обновления
Procedure showupdatemenu; 
var cm,cmcancel,click : command;  
i:integer;
begin 
    showAlert('Обновление',  //Доступна новая версия программы, хотите ли вы ее загрузить прямо сейчас?';
              'Доступна новая версия программы. Загрузить прямо сейчас?', 
              Imginvite,//LoadImage('/logo2.png'),  
              ALERT_INFO);  
              
    playAlertSound;  
    cm := createCommand('Загрузить', CM_OK, 1);      
    cmcancel:= createCommand('Отмена', CM_CANCEL  , 1);  
    addCommand(cm);  
    addCommand(cmcancel);  
    
    repeat  
    click:=getClickedCommand;
        delay(100); 
 
    until click <> emptyCommand; 
 
if  click = cm then begin i:=m2.platform_request(JadUrl); halt; end;

//if  click = cmcancel then  showmessage('cmcancel') else showmessage('dontknow') ;



end;


// проверка возможно сти оплаты 




//**********************************************************
/// проверка на обновление

Procedure update;
Var sl:integer;
  conn: http; 
      htmlBody,s: string; 
      contentType: string;
      
Begin
//Pversion  =1 ;
//updatesrv = 'http://220s.net/update/';
///JadUrl =  'http://220s.net/update/DTMFcall.jad';
ClearForm;

showform;

setformtitle('Обновление');
if getWidth>176 then begin
 sl:=FormAddSpace;
 sl:=FormAddSpace;
 sl:=FormAddSpace;
  sl:=FormAddSpace;
  sl:=FormAddSpace;
  sl:=FormAddSpace;
  
 end
 else begin
  sl:=FormAddSpace;
  sl:=FormAddSpace;
 end;
sl:=FormAddImage(Imglogo);
sl:=FormAddString(chr(10)+'Идет соединение...'); // идет соединение



if not openHttp(conn,updatesrv) then 

	Begin
	sl:=FormAddString('ошибка соединения!');// ошибка соединения 
				PlayAlertSound;
				createOkCommand;
				closeHttp(conn);	
	
	end
	
	else begin

setHttpMethod(conn, GET); 
    addHttpHeader(conn, 'User-agent', 'Opera'); 
    if sendHttpMessage(conn) <> 200 then 
				begin 
				sl:=FormAddString('ошибка соединения!');// ошибка соединения 
				PlayAlertSound;
				createOkCommand;
				closeHttp(conn);	
				
				end else begin
				
    htmlBody := getHttpResponse(conn); 
    contentType := getHttpHeader(conn, 'Content-type'); 
    closeHttp(conn);
    //showmessage(htmlBody);
    
    If stringtointeger(htmlBody)>Pversion
    Then showupdatemenu  // загрузить
    
				else 
					begin// последняя версия
					
					
					sl:=FormAddString('Вы используете последнюю версию програмы.'); // последняя версия
					PlayAlertSound;
					createOkCommand;
					end;

										end;
        end;


End;

//**********************************************************
function phonetextbox:string;
var clicked,CScancel,CSok:command;
buf:string;
Begin
 showTextBox('Ввод номера от кого', '', 13, TF_PHONENUMBER);//Ввод мобильного номера
 
    CSok := createCommand('Ок', CM_OK,0);     //Звонить
  CScancel:= createCommand('Отмена', CM_CANCEL,0);     //Звонить
    

addCommand(CSok); 
addCommand(CScancel); 

clicked:=emptyCommand;

    repeat 
    clicked:=getClickedCommand;
      delay(200); 
    until clicked <> emptyCommand; 
    
phonetextbox:='';
If clicked=CSok then begin
buf:=getTextBoxString;
if (getchar(buf,0)='+') then begin
 	buf:=copy(buf,1,length(buf));	 
 	
 
 end;

end;

phonetextbox:=buf;

end;
//**********************************************************
//**********************************************************		
function havetext(s:string):boolean;
var i:integer;
b:boolean;
Begin
b:=false;

for i:=0 to length(s)-1 do if not b then  if (getchar(s,i)<'0') or (getchar(s,i)>'9') then b:=true;

havetext:=b;
end;

function havecyrilik(s:string):boolean;
var i:integer;
b:boolean;
Begin
b:=false;

for i:=0 to length(s)-1 do {if not b then}  if (getchar(s,i)>='А') then begin
  b:=true;
 // showmessage('ошибка',getchar(s,i));
  
  end;

havecyrilik:=b;
end;
//**********************************************************
Function sendHTTPsms(metod:string;):string;
Var sl:integer;
  conn: http; 
      htmlBody,s: string; 
      contentType: string;
      httpzapros:string;
      ch:char;
      
Begin

if metod='ballans'then httpzapros:=('http://send.crazysms.ru/script.php?act=ballance&key='+HTTPTran(smskod));

if metod='sendsms'then  httpzapros:=({'http://220s.net/myscript/sms.php?url='+HTTPTran(}'http://send.crazysms.ru/script.php?act=send&to='+HTTPTran(komu)+'&from='+HTTPTran(otkogo)+'&msg='+HTTPTran(smstekst)+'&key='+HTTPTran(smskod)){)};
if metod='smsid'then httpzapros:=('http://send.crazysms.ru/script.php?act=status&smskey='+HTTPTran(smsid));


 //showmessage('Ошибка',httpzapros);
 
if not openHttp(conn,httpzapros) then 
	Begin
	//htmlBody:= 'Ошибка защиты телефона к доступу в Internet! Включите эту возможность в настройке мидлета в вашем телефоне.'; 
	htmlBody:= '348'; 
	end
	else begin
setHttpMethod(conn, GET); 
    addHttpHeader(conn, 'User-agent', 'Opera'); 
    if sendHttpMessage(conn) <> 200 then 
				begin 
				//htmlBody:='Ошибка соединения с сервером, возможно сервер в отключке. Попробуйте еще раз соединиться чуть позже.';
								htmlBody:='349';
				PlayAlertSound;
				closeHttp(conn);

		end else begin
				
    htmlBody := getHttpResponse(conn); 
    contentType := getHttpHeader(conn, 'Content-type'); 
   closeHttp(conn);

										end;
        end;
        
   sendHTTPsms:= htmlBody;   

end;
//**********************************************************
//потключение к инету в фоновом режиме и отдача результата

procedure threadaction();
Var sl,slI:integer; 
imgsend:image;
Begin
imgsend:=LoadImage('/sending.png');
setcolor(255,255,255);
fillRect(0, 0,getWidth,getHeight);

setcolor(255,176,0);
drawText('Подождите...', (getWidth - getStringWidth('Подождите...'))/2,70);
setcolor(255,255,255);

sl:=0;
sli:=1;
//Отправка смс

repeat
sl:=sl+sli+trunc((sl/6)*(sli/1));
If (sl>(getWidth-getimageWidth(imgsend))) then sli:=-1 if (sl<=0) then begin  sli:=1;  end;

fillRect(0, 0,GetWidth,getimageHeight(imgsend)+6);

DrawImage(imgsend, sl, {trunc((getHeight/2) +(getimageHeight(imgsend)/2) )} random(3)+4);

repaint;
delay(4);

until stopthread;

stop;


end;

//**********************************************************
function OTKOGOcheck(s:string):boolean;
var i:integer;
b:boolean;
Begin
b:=false;

for i:=0 to length(s)-1 do {if not b then}  if ((getchar(s,i)>='А') or (getchar(s,i)<'0') or ((getchar(s,i)>'9')and (getchar(s,i)<'A'))) then  if ((getchar(s,i)<>'.')and(getchar(s,i)<>'-'))  then  begin
  b:=true;
 // showmessage('ошибка',getchar(s,i));
  
  end;
OTKOGOcheck:=b;

end;


function allNumbers(s:string):boolean;
var i:integer;
b:boolean;
Begin
b:=false;

for i:=0 to length(s)-1 do  if (getchar(s,i)<'0') or (getchar(s,i)>'9') then  begin
  b:=true;
 // showmessage('ошибка',getchar(s,i));
  
  end;
allNumbers:=b;

end;
//**********************************************************

function translate(inc:string):string;
  var i,n: Integer;
  s:string;
  ch:char;
begin
n:=0;
for i:=0 to length(inc)-1do 
			begin
			ch:=getChar(inc,i);
			n:=ord(ch);
			if n>=192 then n:=n+848;
		  s:=s+chr(n);
			end;
		translate:=s;
		
end;

function converIncMsg(mes:string):string; // обработка входящей цифры
Var s:string;
var
len:integer;
mess,in_copy,all: string;
Begin

s:=copy(mes,0,3);



If s = '090' then begin
			mes:=copy(mes,4,length(mes));
		mess:=translate(mes);
		
		end;
else
If s = '850' then mess:='Ошибка при отправке смс!';
else
If s = '009' then mess:='Запрещенный отправитель!';
else
If s = '851' then mess:='Смс отправлено, при наличии средств на счете ожидайте код.';
else
If s = '348' then mess:='Ошибка защиты телефона к доступу в Internet! Включите эту возможность в настройке мидлета в вашем телефоне.';
else
If s = '349' then mess:='Ошибка соединения с сервером, возможно сервер в отключке. Попробуйте еще раз соединиться чуть позже.';
else

If s = '001' then mess:='Неправильно задан отправитель, разрешается только латинские цифры и буквы!';
else
If s = '002' then mess:='Неправильно задан номер получателя!';
else
If s = '003' then mess:='Текст превышает ограничение символов или не задан!';
else
If s = '004' then mess:='В данный момент сервис временно не работает!';
else
If s = '005' then mess:='Неверный код!';
else
If s = '006' then mess:='Ваш IP адрес заблокирован. Повторите попытку через 1 час.';
else
If s = '007' then mess:='Ваш ключ полностью использован, приобретите новый.';
else
If s = '008' then mess:='В сообщении обнаружены запрещенные слова!';
else
If s = '050' then mess:='Ключ не существует, или был удален.';
else
If s = '051' then mess:='Ключ полностью использован.';
else
If s = '052' then begin
  mes:=copy(mes,4,length(mes));
  len:= pos(mes,' ');
  in_copy:=copy(mes,0,len);  
  all:=copy(mes,len+1,length(mes));
  mess:='Ключ есть. '+in_copy+' раз(а) использовано. Емкость: '+all+'. Остаток: '+integertostring(stringtointeger(all)-stringtointeger(in_copy));  
// mess:='x y - Ключ есть x=использовано раз; y=емкость ';
 
 end
else
If s = '080' then mess:='СМС не найдена в базе данных.';
else
If s = '999' then mess:='Ошибка в запросе.';
else
If s = '100' then begin 
smsID:=copy(mes,4,length(mes));

mess:='Смс поставлено в очередь на отправку. Вы можете проверить статус его доставки в меню "Статус сообщения"';
end;

converIncMsg:=mess;



end;

//**********************************************************

		
Procedure sendSMS;//отправка смс
Var Fkod,Fot,Fto,Ftext,i:integer;
clicked,CMsend,CMtranslit,CSphone,CScancel:command;
buf:string;

Bexit:Boolean;
Begin
clearform;
Setformtitle('Cмс');

//i:=FormAddImage(Imglogo);
Fto:=formAddTextField('Кому:'+chr(10)+'(Номер получателя в международном формате, без знака "+")', komu,13,  TF_PHONENUMBER );

Fot:=formAddTextField('Отправитель:'+chr(10)+'(Цифры или слово латинскими буквами, до 11 знаков)', otkogo , 11, TF_URL);
Fkod:=formAddTextField('Ключ:', smskod, 8, TF_ANY);

Ftext:=formAddTextField('Текст сообщения:'+chr(10)+'(160 - Латиницей, 70 - Кириллицей )', smstekst, 160, TF_ANY);

showform;
Bexit:=false;

 CMsend := createCommand('Oтправить СМС!', CM_OK, 1);
 CMtranslit := createCommand('Автотранслит', CM_OK, 1);
//  CSphone := createCommand('От кого из контактов', CM_OK, 1);
    CScancel := createCommand('Гл. Меню', CM_CANCEL, 1);
 
  
    addCommand(CMtranslit);
  //   addCommand(CSphone); 
      addCommand(CMsend); 
       addCommand(CScancel); 
    
   
clicked:=EmptyCommand;

Repeat
clicked := getClickedCommand;

buf:=FormGetText(Ftext);
if havecyrilik(buf) then Setformtitle('Cмс('+integertostring(length(buf))+' из 70) киилица' )
else Setformtitle('Cмс('+integertostring(length(buf))+' из 160) латиница' );

if getchar(FormGetText(Fto)	,0)='+' then 
Begin
buf:=FormGetText(Fto);
buf:=copy(buf,1,length(buf));
	FormsetText(Fto,(buf));
end;

If clicked = CMtranslit then 
	Begin
	buf:=rus2lat(FormGetText(Ftext));		
		if length(buf)>160 then  buf:=copy(buf,0,160);
   
	FormsetText(Ftext,(buf));
	
	end;
	
	If clicked = CSphone then 
	Begin
	buf:=phonetextbox;
	showform;
	if length(buf)>11 then buf:=copy(buf,length(buf)-11,length(buf));
	if buf<>'' then FormsetText(Fot,buf);
	end;
	
		If clicked = CScancel then 
	Begin
		otkogo:=FormGetText(Fot);
	komu:=FormGetText(Fto);
	smskod:=FormGetText(Fkod);
	smstekst:=FormGetText(Ftext);	
	
	Bexit:=true;
	end;
	
	If clicked = CMsend then 
	Begin
	//otkogo,komu,smskod,smstekst:string;
	otkogo:=FormGetText(Fot);
	komu:=FormGetText(Fto);
	smskod:=FormGetText(Fkod);
	smstekst:=FormGetText(Ftext);
	
	buf:=rus2lat(otkogo);
		if length(buf)>11 then  otkogo:=copy(buf,0,10)
		else  otkogo:=buf;
  
	FormsetText(Fot,otkogo);

 If otkogo='' then showmessage('Ошибка','Не указан "Отправитель"!')
  else
  if (not allNumbers(otkogo)) and (length(otkogo)<6) then showmessage('Ошибка','Отправитель задан только цифрами, в этом случае мин. длина должна быть 6 символов!')
  else
  
  
  If OTKOGOcheck(otkogo) then showmessage('Ошибка','В поле "Отправитель" обнаружены недопустимые символы!')
  else
	If length(smskod)<8 then  showmessage('Ошибка','Проверьте правильность ввода секретного ключа.')
  else
  If komu='' then showmessage('Ошибка','Введите номер получателя.')
  else
  If length(komu)<7 then showmessage('Ошибка','Номер получателя должен быть не менее 7 символов.')
  else
	If smskod='' then showmessage('Ошибка','Введите секретный ключ!')
  else
	If smstekst='' then showmessage('Ошибка','Текст сообщения пустой!')	
  else
  	If (havecyrilik(FormGetText(Ftext)))and (length(FormGetText(Ftext))>70) then showmessage('Ошибка','Кириллицей допускается ввод только 70 символов. Уменьшите, пожалуйста, длину сообщения, либо используйте транслитерацию.')	
  else
  If (havetext(otkogo)) and (length(otkogo)>11) then showmessage('Ошибка','"Отправитель" дожен быть не менее 6 символов.')
  else
  Begin
  //отправка смс
  showcanvas;  
  stopthread:=false;
init;
start;
delay(2000);
buf:=sendHTTPsms('sendsms');
//stop;
stopthread:=true;
  showmessage('Статус смс',converIncMsg(buf));
  Bexit:=true;
  
     
  end;
	
	end;
	
	

delay(300);
until Bexit;

 
End;

//**********************************************************
//Вызов меню выбора языка
Procedure PROCcoolsms;
var 
//Menus:array[1..30] of integer; 
Menus:integer; 
    play,cancel,clicked: command;  
    i,n,selectedN:integer;
    buf:string;
begin 
    showMenu('Прикольные смс-ки', CH_EXCLUSIVE);  
    

			
 For i:= 1 to CoolsmsN do begin
   Menus:= menuAppendString(Coolsms[i].ot+':'+Coolsms[i].text);  
   end;
   
  
    cancel:=createCommand('Отмена', CM_CANCEL, 1); 
    addCommand(cancel);
    
     play := createCommand('Выбрать', CM_OK, 1);  
    addCommand(play);  
    
    clicked:=emptyCommand;
    
    repeat  
        delay(300);  
        clicked := getClickedCommand;  
    until (clicked = cancel) or (clicked = play);   

   
  If clicked<>cancel then
   begin
   
	selectedN:=menuGetSelectedIndex+1;
	smstekst:=Coolsms[selectedN].text;	
		if length(smstekst)>160 then  smstekst:=copy(smstekst,0,160);  

otkogo:=Coolsms[selectedN].ot;
		if length(otkogo)>11 then  otkogo:=copy(otkogo,0,11); 
 
	sendSMS;
					
	end;    
      
   
end;

//**********************************************************

Procedure balansForm;
var i, textField_id: integer;  
    play,cancel,clicked: command; 
    buf:string;
exits:boolean; 
begin 
clearform;

exits:=false;

setformtitle('Проверка остатка на коде');
textField_id := formAddTextField('Ключ:',
                                     smskod, 8, TF_ANY);  
                                     
    showForm;  
    
       cancel:=createCommand('Отмена', CM_CANCEL, 1); 
    addCommand(cancel);
    
     play := createCommand('Проверить', CM_OK, 1);  
    addCommand(play);  
    
    clicked:=emptyCommand;
    
    repeat  
        delay(300);  
        clicked := getClickedCommand;  
        
  
If clicked=play then   begin    
    smskod:=FormGetText(textField_id);
    
    If (length(smskod)<8)  then  showmessage('Ошибка','Проверьте правильность ввода секретного ключа.')
  else
  begin
  
    showcanvas;  
  stopthread:=false;
init;
start;
delay(2000);
buf:=sendHTTPsms('ballans');
stopthread:=true;
showmessage('Статус баланса',converIncMsg(buf));  
  
  
  exits:=true;
  end;
  end;
        
        If clicked=cancel then exits:=true;
        
        
        
    until exits;     
    


end;

//**********************************************************

Procedure checksmsid;
Var buf:string;
Begin

If smsid='' then  showmessage('Ошибка','Для проверки статуса, сначала отправьте смс!')
  else
  begin
  
showcanvas;  
  stopthread:=false;
init;
start;
delay(2000);
buf:=sendHTTPsms('smsid');
stopthread:=true;
showmessage('Статус сообщения',converIncMsg(buf)); 
end;

end;

//**********************************************************
Function cmdDOsmsPay(n:integer):string;
var ps,errtext: string;
iii,nn:integer;
Begin
	
iii:=sms.Send('sms://'+smsPay[n].smsN, '70+key'); //then errtext:= (Ltext(3))  //Ошибка защиты телефона! Приложению не удалось получить доступ к отправке смс, пожалуйста разрешите приложению отправлять смс для подачи запроса на звонок.


while sms.is_sending=-1 do begin // ждём, пока сообщение не будет отправлено 
       delay(100);   
end;

 if not sms.successfull=-1 then cmdDOsmsPay:='850';  //Ошибка при отправке смс запроса...
 else cmdDOsmsPay:='851';  //Смс запрос отправлен, при наличии средств на счете ожидайте звонка...
 

end;

//**********************************************************

Procedure smsPayform(n:integer);
var play, click , play2: command;
kontent,buf:string;
Begin
kontent:='После нажатия кнопки оплатить, Вам в течение нескольких минут придет смс сообщение с кодом для програмы. Вы оплачиваете '+smsPay[n].opisanie+' деньги будут сняты с вашего счета. Внимание! текущая оплата действительна только для жителей "'+countries[smsPay[n].cantry]+'". Для оплаты вручную отправьте текст "70+key" без кавычек! на номер '+smsPay[n].smsN+' c вашего телефона.';
 ///smsPay
showAlert('Купить код',  //Доступна новая версия программы, хотите ли вы ее загрузить прямо сейчас?';
              kontent, 
              Imginvite,//LoadImage('/logo2.png'),  
              ALERT_INFO);  
              
              

 play := createCommand('Оплатить', CM_OK, 1);      
  play2 := createCommand('Отмена', CM_CANCEL   , 1); 
    addCommand(play2);
    addCommand(play); 
click:= emptyCommand;
 
    repeat  
    click:=getClickedCommand;
        delay(300); 
     until (click <>emptyCommand);


if click=play then begin

 showcanvas;  
  stopthread:=false;
init;
start;
delay(2000);
buf:=cmdDOsmsPay(n);
stopthread:=true;
showmessage('Инфомация',converIncMsg(buf)); 


 
 end;
 




end;

//**********************************************************

Procedure smsPayCMD; /// оплата смс
var 
//Menus:array[1..30] of integer; 
Menus:integer; 
    play,cancel,clicked: command;  
    i,n,selectedN:integer;
    buf:string;
begin 
    showMenu('Выберите страну и номинал кода', CH_IMPLICIT );  
 
 For i:= 1 to smspayn do begin
   Menus:= menuAppendStringImage(countries[smsPay[i].cantry]+''+smsPay[i].opisanie+'',loadimage('/'+integertostring(smsPay[i].cantry)+'.png'));  
   end;
   
  
    cancel:=createCommand('Отмена', CM_CANCEL, 1); 
    addCommand(cancel);
    
     play := createCommand('Выбрать', CM_OK, 1);  
    addCommand(play);  
    
    clicked:=emptyCommand;
    
    repeat  
        delay(300);  
        clicked := getClickedCommand;  
    until (clicked = cancel) or (clicked = play);   

   
  If clicked<>cancel then
   begin
   
	selectedN:=menuGetSelectedIndex+1;
	smsPayform(selectedN);
	
		
	end;    
      
      

end;

//**********************************************************
/// проверка на обновление

Procedure checkcantpay;
Var sl:integer;
  conn: http; 
      htmlBody,s: string; 
      contentType: string;
      
Begin
//Pversion  =1 ;
//updatesrv = 'http://220s.net/update/';
///JadUrl =  'http://220s.net/update/DTMFcall.jad';
ClearForm;

showform;

setformtitle('Проверка смс оплаты');
if getWidth>176 then begin
 sl:=FormAddSpace;
 sl:=FormAddSpace;
 sl:=FormAddSpace;
  sl:=FormAddSpace;
  sl:=FormAddSpace;
  sl:=FormAddSpace;
  
 end
 else begin
  sl:=FormAddSpace;
  sl:=FormAddSpace;
 end;
sl:=FormAddImage(Imglogo);
sl:=FormAddString(chr(10)+'Идет соединение...'); // идет соединение



if not openHttp(conn,updatesrvOK) then 

	Begin
	sl:=FormAddString('ошибка соединения!');// ошибка соединения 
				PlayAlertSound;
				createOkCommand;
				closeHttp(conn);	
	
	end
	
	else begin

setHttpMethod(conn, GET); 
    addHttpHeader(conn, 'User-agent', 'Opera'); 
    if sendHttpMessage(conn) <> 200 then 
				begin 
				sl:=FormAddString('ошибка соединения!');// ошибка соединения 
				PlayAlertSound;
				createOkCommand;
				closeHttp(conn);	
				
				end else begin
				
    htmlBody := getHttpResponse(conn); 
    contentType := getHttpHeader(conn, 'Content-type'); 
    closeHttp(conn);
    //showmessage(htmlBody);
    
    If stringtointeger(htmlBody)=1
    Then smsPayCMD  // загрузить
    
				else 
					begin// последняя версия
					
					
					sl:=FormAddString('Оплата через СМС временно недоступна, возможно версия вашего приложения устарела. Обратитесь в службу поддержки ICQ 10-11-500'); // последняя версия
					PlayAlertSound;
					createOkCommand;
					end;

										end;
        end;


End;


//**********************************************************
Procedure showmessageImage(title,kontent:string;im:image;);
Var i:integer;
Begin
{
showAlert(title,  //Доступна новая версия программы, хотите ли вы ее загрузить прямо сейчас?';
              kontent, 
              im,//LoadImage('/logo2.png'),  
              ALERT_INFO);  
}
              
              

clearform;
setformtitle(title);
i:=FormAddImage(im);
i:=FormAddString(kontent); // идет соединение
showform;  
createOkCommand;    
        

End;
//**********************************************************


//**********************************************************
Procedure showhelp;
Begin
showmessageImage('Справка',ResToString('thelp.png'),LoadImage('/spravka.png') );
end;

//**********************************************************

Procedure showabout;
Begin
showmessageImage('О программе',ResToString('tabout.png'),LoadImage('/about.png') );
end;


//**********************************************************


///главное меню
function mainmenu(n:integer):integer;
var cmsms, setings,help, exit,langs,balans,help,about,updates ,stat,popolnenie,balans: integer;  
    play,back, clicked : command; 
    
Begin
showMenu('Главное меню', CH_IMPLICIT);//главное меню



cmsms:= menuAppendStringimage('Отправить смс',imA[1]);
stat:=menuAppendStringimage('Статус сообщения',imA[2]);
balans:=menuAppendStringimage('Баланс кода',imA[3]);
setings := menuAppendStringimage('Прикольные СМСки',imA[4]);  
popolnenie:=menuAppendStringimage('Приобрести код',imA[5]);
help := menuAppendStringimage('Справка',imA[6]);      
about:=  menuAppendStringimage('О программе',imA[7]); 
updates:=menuAppendStringimage('Обновление',imA[8]); 
exit :=  menuAppendStringimage('Выход',imA[9]); 

ui.list_set_selected(n);    
 
  play := createCommand('Выбрать', CM_OK, 1);  
    addCommand(play);
    
     clicked:=EmptyCommand;
    repeat  
        delay(200);  
        clicked := getClickedCommand;  
    until clicked <> EmptyCommand;  
    	mainmenu:=menuGetSelectedIndex;		
    
    RemoveCommand(play);
            
  
    if menuGetSelectedIndex = exit then begin saveStore; halt; end;
    if menuGetSelectedIndex = updates then  update;
      if menuGetSelectedIndex = cmsms then   sendSMS;
    if menuGetSelectedIndex = setings then   PROCcoolsms;
    if menuGetSelectedIndex = balans then  balansForm;
    if menuGetSelectedIndex = stat then  checksmsid;// проверка статуса
				
	if menuGetSelectedIndex = popolnenie then  checkcantpay;
	
	if menuGetSelectedIndex = help then  showhelp;
	if menuGetSelectedIndex = about then  showabout;		
    
 
					
end;



//**********************************************************

Procedure addcoolsms(s,s2:string);
Begin
coolsmsN:=coolsmsN+1;
coolsms[coolsmsN].text:=s;
coolsms[coolsmsN].ot:=s2;

end;

//**********************************************************
Procedure loading;
Begin
smspayn:=0;

smspayn:=smspayn+1;
imA[smspayn]:=loadimage('/send2.png');

smspayn:=smspayn+1;
imA[smspayn]:=loadimage('/status.png');

smspayn:=smspayn+1;
imA[smspayn]:=loadimage('/balance12.png');

smspayn:=smspayn+1;
imA[smspayn]:=loadimage('/pricolnie_sms.png');

smspayn:=smspayn+1;
imA[smspayn]:=loadimage('/buy_key.png');

smspayn:=smspayn+1;
imA[smspayn]:=loadimage('/spravka.png');

smspayn:=smspayn+1;
imA[smspayn]:=loadimage('/about.png');

smspayn:=smspayn+1;
imA[smspayn]:=loadimage('/obnovlenie.png');

smspayn:=smspayn+1;
imA[smspayn]:=loadimage('/exit1.png');
{
countries[1]:='Россия';
countries[2]:='Украина';
countries[3]:='Казахстан';
countries[4]:='Таджикистан';
}

countries[1]:='Россия';
countries[2]:='Украина';
countries[3]:='Казахстан';

smspayn:=0;

smspayn:=smspayn+1;
smspay[smspayn].smsN:='2893';
smspay[smspayn].opisanie:='(3 СМС) - 1,3$';
smspay[smspayn].cantry:=1;

smspayn:=smspayn+1;
smspay[smspayn].smsN:='7250';
smspay[smspayn].opisanie:='(6 СМС) - 2,5$';
smspay[smspayn].cantry:=1;

smspayn:=smspayn+1;
smspay[smspayn].smsN:='2895';
smspay[smspayn].opisanie:='(12 СМС) - 5$';
smspay[smspayn].cantry:=1;

smspayn:=smspayn+1;
smspay[smspayn].smsN:='7733';
smspay[smspayn].opisanie:='(25 СМС) - 10$';
smspay[smspayn].cantry:=1;

smspayn:=smspayn+1;
smspay[smspayn].smsN:='7099';
smspay[smspayn].opisanie:='(2 СМС) - 0,99$';
smspay[smspayn].cantry:=2;

smspayn:=smspayn+1;
smspay[smspayn].smsN:='7250';
smspay[smspayn].opisanie:='(7 СМС) - 1,99$';
smspay[smspayn].cantry:=2;

smspayn:=smspayn+1;
smspay[smspayn].smsN:='5373';
smspay[smspayn].opisanie:='(9 СМС) - 3,9$';
smspay[smspayn].cantry:=2;


smspayn:=smspayn+1;
smspay[smspayn].smsN:='8444';
smspay[smspayn].opisanie:='(3 СМС)- 1,9$';
smspay[smspayn].cantry:=3;

smspayn:=smspayn+1;
smspay[smspayn].smsN:='4449';
smspay[smspayn].opisanie:='(5 СМС) - 2,5$';
smspay[smspayn].cantry:=3;

smspayn:=smspayn+1;
smspay[smspayn].smsN:='4161';
smspay[smspayn].opisanie:='(8 СМС) - 4,5$';
smspay[smspayn].cantry:=3;


//coolsms
coolsmsN:=0;
addcoolsms('Нифига ты не получишь от меня в этом году!!!','DedMoroz'); 
addcoolsms('Привет, я вирус, и я войду в твои мозги прямо сейчас...извините, я ухожу, не могу найти мозгов.','Virus');
addcoolsms('Вы отключены за разбазаривание государственных секретов по нашей сети.','Information');
addcoolsms('Дети Намибии благодарны вам за Ваше пожертвование - 10$, вместе мы победим голод!','Information');
addcoolsms('Предлагаю интим, криминал и, до кучи, Гербалайф.','Reklama');
addcoolsms('С Вашего лицевого счёта было снято 170 руб. на озеленение Луны.Благодарим за помощь.','Lunatiki');
addcoolsms('В связи с резким похолоданием ваш счет заморожен.','Information');
addcoolsms('Завтра приеду, думаю, на весь отпуск, накрывайте стол!','Tesha');
addcoolsms('У вас морщины? Перхоть? Маленькая грудь?..................... УЖАС!','Reklama');
addcoolsms('Купи пожалуйста туалетную бумагу и срочно приезжай домой!','Mama');
addcoolsms('Познакомлюсь с красивой девушкой для создания крепкой семьи на одну ночь.','Muzhik');
addcoolsms('Остаток ваших средств переведен на счет организации "Аль-Каида".Спасибо за вклад в развитие мирового терроризма! ','BenLaden');
addcoolsms('Готовь деньги, я беременна!','Roddom');
addcoolsms('Ваша анкета опубликована на нашем сайте!Надеемся вскоре вы найдете свою голубую половинку! Чмоки ;)','Gay.ru');
addcoolsms('Не хочу быть телефоном, хочу быть тамагочи, накорми меня!!!','Telefon');
addcoolsms('Купи водки, пива и чего-нибудь попить!','Alkash');
addcoolsms('Буду поздно. Суп на полу - вытри.','Mama');
addcoolsms('Поднимите голову. Мне вас плохо видно.','Sniper');
addcoolsms('Если вы не будете отправлять смс своей любимой, мы вас отключим!','Info');

U[1]:='%01';U[2]:='%02';U[3]:='%03';U[4]:='%04';U[5]:='%05';U[6]:='%06';U[7]:='%07';U[8]:='%08';U[9]:='%09';U[10]:='%0A';U[11]:='%0B';U[12]:='%0C';U[13]:='%0D';U[14]:='%0E';U[15]:='%0F';U[16]:='%10';U[17]:='%11';U[18]:='%12';U[19]:='%13';U[20]:='%14';U[21]:='%15';U[22]:='%16';U[23]:='%17';U[24]:='%18';U[25]:='%19';U[26]:='%1A';U[27]:='%1B';U[28]:='%1C';U[29]:='%1D';U[30]:='%1E';U[31]:='%1F';U[32]:='+';U[33]:='%21';U[34]:='%22';U[35]:='%23';U[36]:='%24';U[37]:='%25';U[38]:='%26';U[39]:='%27';U[40]:='%28';U[41]:='%29';U[42]:='%2A';U[43]:='%2B';U[44]:='%2C';U[45]:='%2D';U[46]:='%2E';U[47]:='%2F';U[48]:='0';U[49]:='1';U[50]:='2';U[51]:='3';U[52]:='4';U[53]:='5';U[54]:='6';U[55]:='7';U[56]:='8';U[57]:='9';U[58]:='%3A';U[59]:='%3B';U[60]:='%3C';U[61]:='%3D';U[62]:='%3E';U[63]:='%3F';U[64]:='%40';U[65]:='A';U[66]:='B';U[67]:='C';U[68]:='D';U[69]:='E';U[70]:='F';U[71]:='G';U[72]:='H';U[73]:='I';U[74]:='J';U[75]:='K';U[76]:='L';U[77]:='M';U[78]:='N';U[79]:='O';U[80]:='P';U[81]:='Q';U[82]:='R';U[83]:='S';U[84]:='T';U[85]:='U';U[86]:='V';U[87]:='W';U[88]:='X';U[89]:='Y';U[90]:='Z';U[91]:='%5B';U[92]:='%5C';U[93]:='%5D';U[94]:='%5E';U[95]:='%5F';U[96]:='%60';U[97]:='a';U[98]:='b';U[99]:='c';U[100]:='d';U[101]:='e';U[102]:='f';U[103]:='g';U[104]:='h';U[105]:='i';U[106]:='j';U[107]:='k';U[108]:='l';U[109]:='m';U[110]:='n';U[111]:='o';U[112]:='p';U[113]:='q';U[114]:='r';U[115]:='s';U[116]:='t';U[117]:='u';U[118]:='v';U[119]:='w';U[120]:='x';U[121]:='y';U[122]:='z';U[123]:='%7B';U[124]:='%7C';U[125]:='%7D';U[126]:='%7E';U[127]:='%7F';U[128]:='%80';U[129]:='%81';U[130]:='%82';U[131]:='%83';U[132]:='%84';U[133]:='%85';U[134]:='%86';U[135]:='%87';U[136]:='%88';U[137]:='%89';U[138]:='%8A';U[139]:='%8B';U[140]:='%8C';U[141]:='%8D';U[142]:='%8E';U[143]:='%8F';U[144]:='%90';U[145]:='%91';U[146]:='%92';U[147]:='%93';U[148]:='%94';U[149]:='%95';U[150]:='%96';U[151]:='%97';U[152]:='%98';U[153]:='%99';U[154]:='%9A';U[155]:='%9B';U[156]:='%9C';U[157]:='%9D';U[158]:='%9E';U[159]:='%9F';U[160]:='%A0';U[161]:='%A1';U[162]:='%A2';U[163]:='%A3';U[164]:='%A4';U[165]:='%A5';U[166]:='%A6';U[167]:='%A7';U[168]:='%A8';U[169]:='%A9';U[170]:='%AA';U[171]:='%AB';U[172]:='%AC';U[173]:='%AD';U[174]:='%AE';U[175]:='%AF';U[176]:='%B0';U[177]:='%B1';U[178]:='%B2';U[179]:='%B3';U[180]:='%B4';U[181]:='%B5';U[182]:='%B6';U[183]:='%B7';U[184]:='%B8';U[185]:='%B9';U[186]:='%BA';U[187]:='%BB';U[188]:='%BC';U[189]:='%BD';U[190]:='%BE';U[191]:='%BF';U[192]:='%C0';U[193]:='%C1';U[194]:='%C2';U[195]:='%C3';U[196]:='%C4';U[197]:='%C5';U[198]:='%C6';U[199]:='%C7';U[200]:='%C8';U[201]:='%C9';U[202]:='%CA';U[203]:='%CB';U[204]:='%CC';U[205]:='%CD';U[206]:='%CE';U[207]:='%CF';U[208]:='%D0';U[209]:='%D1';U[210]:='%D2';U[211]:='%D3';U[212]:='%D4';U[213]:='%D5';U[214]:='%D6';U[215]:='%D7';U[216]:='%D8';U[217]:='%D9';U[218]:='%DA';U[219]:='%DB';U[220]:='%DC';U[221]:='%DD';U[222]:='%DE';U[223]:='%DF';U[224]:='%E0';U[225]:='%E1';U[226]:='%E2';U[227]:='%E3';U[228]:='%E4';U[229]:='%E5';U[230]:='%E6';U[231]:='%E7';U[232]:='%E8';U[233]:='%E9';U[234]:='%EA';U[235]:='%EB';U[236]:='%EC';U[237]:='%ED';U[238]:='%EE';U[239]:='%EF';U[240]:='%F0';U[241]:='%F1';U[242]:='%F2';U[243]:='%F3';U[244]:='%F4';U[245]:='%F5';U[246]:='%F6';U[247]:='%F7';U[248]:='%F8';U[249]:='%F9';U[250]:='%FA';U[251]:='%FB';U[252]:='%FC';U[253]:='%FD';U[254]:='%FE';U[255]:='%FF';
 
ar1[1]:='a';ar1[2]:='b';ar1[3]:='v';ar1[4]:='g';ar1[5]:='d';ar1[6]:='e';ar1[7]:='yo';ar1[8]:='zh';ar1[9]:='z';ar1[10]:='i';ar1[11]:='y';ar1[12]:='k';ar1[13]:='l';ar1[14]:='m';ar1[15]:='n';ar1[16]:='o';ar1[17]:='p';ar1[18]:='r';ar1[19]:='s';ar1[20]:='t';ar1[21]:='u';ar1[22]:='f';ar1[23]:='kh';ar1[24]:='ts';ar1[25]:='ch';ar1[26]:='sh';ar1[27]:='shch';ar1[28]:='`';ar1[29]:='y';ar1[30]:='`';ar1[31]:='e';ar1[32]:='yu';ar1[33]:='ya';
ar2[1]:='A';ar2[2]:='B';ar2[3]:='V';ar2[4]:='G';ar2[5]:='D';ar2[6]:='E';ar2[7]:='Yo';ar2[8]:='Zh';ar2[9]:='Z';ar2[10]:='I';ar2[11]:='Y';ar2[12]:='K';ar2[13]:='L';ar2[14]:='M';ar2[15]:='N';ar2[16]:='O';ar2[17]:='P';ar2[18]:='R';ar2[19]:='S';ar2[20]:='T';ar2[21]:='U';ar2[22]:='F';ar2[23]:='Kh';ar2[24]:='Ts';ar2[25]:='Ch';ar2[26]:='Sh';ar2[27]:='Shch';ar2[28]:='`';ar2[29]:='Y';ar2[30]:='`';ar2[31]:='E';ar2[32]:='Yu';ar2[33]:='Ya';


Imglogo:=LoadImage('/logo2.png');
Imgicon:=LoadImage('/icon.png');
Imginvite:=LoadImage('/invite.png');
end;

//**********************************************************


//**********************************************************
//**********************************************************
//**********************************************************
//**********************************************************
//**********************************************************
//**********************************************************
//**********************************************************
//**********************************************************
//**********************************************************
begin



Splash;

loading;
//delay(1000);
if readStore then begin showhelp; showcanvas; end;
SplashEnd;

//update;
repeat
mainmenui:=mainmenu(mainmenui);
until 2=3;

end.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
sasha_peleng (04.12.2008)