简单程序 请教 ( 积分: 20 )

  • 主题发起人 主题发起人 mawei0913_green
  • 开始时间 开始时间
M

mawei0913_green

Unregistered / Unconfirmed
GUEST, unregistred user!
这是一个添加到数据库的操作,菜鸟想实现如下功能:当memo1中的汉字数目长度<70时,直接添加到数据库,若memo1中的数目长度>70个汉字时,分若干条添加到数据库中,菜鸟现把程序列出来,还望各位高人帮忙修改一下,谢谢!
控件有memo1,datetimepicker1,listbox(lbxlink2),adoquery(linkquery)
var idstr,contentstr,Telstr,receiveStr,headstr,namestr,sendstr,depstr,CutStr,riqi:string;
i,j,k,count,l:integer;
begin
//自己手工发送
if (memo1.Text='')or (lbxlink2.Items.Text='') then
begin
showmessage('联系人没有添加或内容为空');
exit;
end;
datetimepicker1.Time:=now;
datetimetostring(riqi,'yyyy-mm-dd hh:mm:ss',DateTimePicker1.DateTime+0.001);
contentstr:=trim(memo1.text);
CutStr:='';
//短信分割
j:=1;
count:=length(contentstr);
while (count>70) do
begin
j:=j+1;
count:=count-70;
end;

//发送
for i:=0 to lbxlink2.Items.Count-1 do
begin
linkquery.Close;
linkquery.SQL.Clear;
linkquery.SQL.Add('select id,Department,HeadShip,name,tel from colleague where name='''+trim(lbxlink2.Items)+'''');
linkquery.Open;
while not linkquery.Eof do
begin
idstr:=linkquery.fieldbyname('id').AsString; //id
depstr:=linkquery.fieldbyname('Department').AsString;
headstr:=linkquery.fieldbyname('HeadShip').AsString;
namestr:=linkquery.fieldbyname('name').AsString;
telstr:=linkquery.fieldbyname('tel').AsString;

linkquery.Next;
end;

if (telstr<>'') then
begin
for k:=0 to j do
begin
l:=k*70;
CutStr:='';
if (k=j-1) then
begin
cutstr:=copy(contentstr,l,length(contentstr)-l); //关键是这里,怎么好像没执行
end
else
begin
cutstr:=copy(contentstr,l,70); ////关键是这里,怎么好像没执行
end;

with sendquery do
begin
Close;
SQL.Clear;
SQL.Add('insert into messages(id,time_s,Priority,operator,sender,receiver,tel,content,flag) values('''+trim(idstr)+''','''+trim(riqi)+''',12,'''+trim(depstr)+''','''+trim(headstr)+''','''+trim(namestr)+''','''+trim(telstr)+''','''+trim(cutstr)+''',0)');
try
ExecSQL ;
showmessage('发送成功');
except
messagedlg('数据库连接失败,请检查连接是否成功',mtwarning,[mbok],0);
exit;
end;
end;
end;
end;
end;
end;
 
高人,都在吗?菜鸟遇到了这个问题,不知在何处修改,才能把超过70个汉字的内容,分成成若干条,然后添加到数据库中,还请高人帮忙呀,谢谢。。。在线急等!!
 
问题就是下面这段代码,但知道却不知道该如何修改,我也研究了一中午了,还是没找到,请高人帮忙呀
CutStr:='';
//短信分割
j:=1;
count:=length(contentstr);
while (count>70) do
begin
j:=j+1;
count:=count-70;
end;


if (telstr<>'') then
begin
for k:=0 to j do
begin
l:=k*70;
CutStr:='';
if (k=j-1) then
begin
cutstr:=copy(contentstr,l,length(contentstr)-l); //关键是这里,怎么好像没执行
end
else
begin
cutstr:=copy(contentstr,l,70); ////关键是这里,怎么好像没执行
end;
 
怎么没高人给菜鸟提点意见呢
 
怎么没高人给菜鸟提点意见呢
 
问题就是下面这段代码,但知道却不知道该如何修改,我也研究了一中午了,还是没找到,请高人帮忙呀
CutStr:='';
//短信分割
j:=1;
count:=length(contentstr);
while (count>70) do
begin
j:=j+1;
count:=count-70;
end;


if (telstr<>'') then
begin
for k:=0 to j do
begin
l:=k*70;
CutStr:='';
if (k=j-1) then
begin
cutstr:=copy(contentstr,l,length(contentstr)-l); //关键是这里,怎么好像没执行
end
else
begin
cutstr:=copy(contentstr,l,70); ////关键是这里,怎么好像没执行
end;
 
怎么没高人给菜鸟提点意见呢
 
分太少了,怎么答?你这程序怎么着也要花费一定的时间吧。
 
程序问题不少
count:=length(contentstr);
while (count>70) do
begin
j:=j+1;
count:=count-70;
end;
你是不是想知道是70的多少倍,除70取整不就行了
另外分割时的关系再理理
J:=INT(count/70);
for k:=0 to j do
BEGIIN
start:=k*70+1;
cutstr:=copy(contentstr,start,70);
END;
只提供个思路,你先试试能不能正确分割.再说入库或发送的问题
 
TO :LUJIAYU110
谢谢,这位高人的指教,菜鸟先测试一下
 
To:LUJIAYU110
菜鸟经过您的指教已正确分割,谢谢LUJIAYU110,但是还有一处不是太理想
您方便留个邮箱或QQ吗?还有一块不太明白,还望高人指教,谢谢!
 
向高人学习
 
后退
顶部