小弟在做个打印程序时碰到了这样一个问题,我要求的格式要对齐,但结果出现如下情况 商品名称 格价 数量
300ml五粮液 300.00 1
1000ml印度神 200.00 1
对了,我是用writeln来直接写打印机端口的,而且名称是用了copy只取12个字符,但当出现字符中含有奇数的半角字符时,就出现上述的情况,请问有什么办法可令到上面的格式能对齐???
300ml五粮液 300.00 1
1000ml印度神 200.00 1
对了,我是用writeln来直接写打印机端口的,而且名称是用了copy只取12个字符,但当出现字符中含有奇数的半角字符时,就出现上述的情况,请问有什么办法可令到上面的格式能对齐???
解决方案 »
- 运行期间赋SPEEDBUTTON的ACTION后,speedbutton会DISABLE,为什么
- 有谁知道关于delphi的qq群吗?
- 关于分页打印?
- 谁???有 李维新书《Inside VCL》前两章?? EMAIL给我,送50分!!![email protected]
- 进来笑一笑,十年少
- DShellWindowsEvent这个东东怎么生成?
- SQL语句的问题.
- 50分,一个奇怪的问题,动态创建窗体的时候就不能使用adoquery.不创建就可以
- 昨天我同一个问题,同时在csdn和大富翁上提出,大富翁上有15个回复,而且很详细,csdn上在我up的情况下有三人回复,我发现csdn上的人太自私了,只知道获取,不知道付出,如果有代码的话大家都要,有问题的话大家都不回答。
- 求已知圆的半径和圆心坐标求点与圆的位置关系的Delphi原代码
- 设置combobox?
- 关于数据库自动更新的问题---------------再线等
就不存在你说的问题。
length(str),取得长度。如果不是偶就用空格补。
Rewrite(F);
for kkk=1 to 10 do
begin
s1:= copy(dmctxs.advstringgrid1.cells[2,kkk],0,16);
s2:= copy(dmctxs.advstringgrid1.cells[3,kkk],0,8);
writeln(f,''+s1+' '+s2+'');
end;
writeln(S1:20,S2:10);//不用加空格,定义下域宽即可
var
i,k: Integer;
begin
if Length(s) <= 12 then
begin
Result := s;
Exit;
end;
k := 0;
for i:=1 to 12 do if s[i] >= #80 then Inc(k);
if Odd(k) then Result := Copy(s,1,11)
else Result := Copy(s,1,12);
end;
Rewrite(F);
for kkk=1 to 10 do
begin
s1:= copy(dmctxs.advstringgrid1.cells[2,kkk],0,16);
for i:=1 to 16-length(s1) do
s1:=s1+' ';
s2:= copy(dmctxs.advstringgrid1.cells[3,kkk],0,8);
for i:=1 to 16-length(s2) do
s2:=s2+' ';
writeln(f,''+s1+' '+s2+'');
end;
你用pos()找到,你要拷贝的位置,
然后用copy()就可以了
s1:= copy(dmctxs.advstringgrid1.cells[2,kkk],0,16);
for i:=1 to 16-length(s1) do
也行不通的,之前我已试过,问题在哪呢?就是length(s1) 所得到的值还是16darkhorsedba(老牛)的建议,我就头痛了,因为我也不知道要拷贝的位置在哪?不知我所说的是否恰当,欢迎大家来讨论
这是最好用。