copy函数和delete 函数和用就解决问题
解决方案 »
- 屏幕截取时,GDI设备描述表的一个问题。
- ####求一控件可以实现如下功能####
- 诚聘Delphi精英(财务或审计方向)
- 如何在调用一个程序时,让他在主程序的主窗口之内运行
- 谁知道工具栏菜单栏上的小图片才什么网站上能下载????
- 在数据库中插入图片
- 帮忙修改一下程序~
- win2000环境下,普通用户怎样取得修改系统时间的权限?(编程怎样实现)
- XML使用的例子
- 一个控件中只含有一个*.pas文件,怎样安装它?
- 在delphi中,怎样判断edit控件中填入的是不是数字?怎样给edit控件加长度限制?
- 各位大侠帮帮忙:在dbgrid控件上,当把所有的记录都选上后,怎么才能点其中一条纪录时,使这条记录不选中,而其他记录仍然选中?
作 者:maipu
所属论坛:Delphi
问题点数:20
回复次数:11
发表时间:2001-11-22 21:13:33
各位大哥:
我现在有一个文本文件他的格式如下:
^kkkkk^bbbbb^cccc^ddddd^eeeee^
^qqqqq^ddddd^sssss^pppppp^llll^
如何让他通过程序变为下面的格式
9999999bbbbb eeeee 0 0 88
9999999ddddd lllll 0 0 99
http://www.csdn.net/expert/topic/383/383913.shtm
大家都不知道你的这种字符的替换是否有规律或者说是规则是什么~~
如果没有的话~~阿水的方法就可以了~~1.读取出来~~
2.字符替换~~
3.存入文本~~
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}const
cText =
'^张三 电费 58.99 三月'#13#10 +
'^李四 电费 88.76 三月'#13#10 +
'^王首微 电费 108.77 三月'#13#10;type
TUnitInfo = record //单位信息
rUnitCode: string; //单位帐号 e.g. 858423
rUnitMen: string; //单位职员 e.g. 张三,李四,王首微
end; TChargeInfo = record //费用信息
rChargeCode: string; //费用代码 e.g. 1
rChargeName: string; //费用名称 e.g. 电费
end;const
cUnitInfoCount = 1;
cUnitInfoList: array[0..cUnitInfoCount - 1] of TUnitInfo =
(
(rUnitCode: '858423'; rUnitMen: '张三,李四,王首微')
);const
cChargeInfoCount = 1;
cChargeInfoList: array[0..cChargeInfoCount - 1] of TChargeInfo =
(
(rChargeCode: '1'; rChargeName: '电费')
);const
cMonthCn: array [1..12] of string =
('一月', '二月', '三月', '四月', '五月', '六月',
'七月', '八月', '九月', '十月', '十一月', '十二月');function FindUnit(rUnitMan: string): string;
var
I: Integer;
begin
Result := '';
for I := 0 to cChargeInfoCount - 1 do
if Pos(rUnitMan, cUnitInfoList[I].rUnitMen) > 0 then begin
Result := cUnitInfoList[I].rUnitCode;
Break;
end;
end; { FindUnit }function FindCharge(mChargeName: string): string;
var
I: Integer;
begin
Result := '';
for I := 0 to cChargeInfoCount - 1 do
if mChargeName = cChargeInfoList[I].rChargeName then begin
Result := cChargeInfoList[I].rChargeCode;
Break;
end;
end; { FindCharge }function FindMonth(mMonthCn: string): string;
var
I: Integer;
begin
Result := '';
for I := 1 to 12 do
if mMonthCn = cMonthCn[I] then begin
Result := IntToStr(I);
Break;
end;
end; { FindMonth }procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Text := cText;
// Memo1.Lines.LoadFromFile('aa.txt');
end;procedure TForm1.Button1Click(Sender: TObject);
var
I, J, T: Integer;
S, C: string;
vMoney, vMonth, vCharge, vUnit: string;
begin
Memo2.Lines.Clear;
for I := 0 to Memo1.Lines.Count - 1 do begin
S := Memo1.Lines[I] + ' ';
T := 0;
C := '';
for J := 1 to Length(S) do begin
if S[J] = ' ' then begin
Inc(T);
case T of
1: vUnit := FindUnit(Copy(C, 2, MaxInt));
2: vCharge := FindCharge(C);
3: vMoney := StringReplace(C, '.', '', [rfReplaceAll]);
4: vMonth := FindMonth(C);
end;
C := '';
end else C := C + S[J];
end;
Memo2.Lines.Add(vUnit + ' ' + vMoney + ' ' + vMonth + ' ' + vCharge);
end;
// Memo2.Lines.SaveToFile('bb.txt');
end;end.
[email protected]
const
cUnitInfoCount = 2;
cUnitInfoList: array[0..cUnitInfoCount - 1] of TUnitInfo =
(
(rUnitCode: '858423'; rUnitMen: '张三,李四,王首微'),
(rUnitCode: 'CSDN'; rUnitMen: 'zswang,tikkypeng,maipu,byrybye')
);const
cChargeInfoCount = 2;
cChargeInfoList: array[0..cChargeInfoCount - 1] of TChargeInfo =
(
(rChargeCode: '1'; rChargeName: '电费'),
(rChargeCode: '2'; rChargeName: '网费')
);
照片!照片!照片!照片!照片!照片!照片!照片!照片!照片!
照片!照片!照片!照片!照片!照片!照片!照片!照片!照片!
照片!照片!照片!照片!照片!照片!照片!照片!照片!照片!
sourceFile,DestFile:TextFile;
myStr:String;
spaceLoc:integer;
resultStr:String;
headStr:String;
lineOver:Boolean;在某按钮的事件中写以下代码
if OpenDialog1.Execute and SaveDialog1.Execute
then begin AssignFile(sourceFile,OpenDialog1.FileName);
Reset(sourceFile);
AssignFile(DestFile,SaveDialog1.FileName);
ReWrite(DestFile); while not Eof(sourceFile) do
begin //读文件
readln(sourceFile,myStr);
lineOver:=False;
resultStr:=''; myStr:=trim(myStr);
if not myStr=''
then begin resultStr:='';
spaceLoc:=0;
for i:=1 to StrLen(PChar(myStr))
do begin //找到“电费”的位置
if myStr[i]=' ' //一个空格
then begin
spaceLoc:=i;
delete(myStr,1,i);
myStr=trim(myStr);
break;
end;
end;
if not myStr=''
then begin
headStr:=myStr;
StrLen(PChar(headStr))>4 then begin
delete(headStr,5,StrLen(PChar(headStr))-4); //只留前四字符
if headStr='电费'
then begin
end
else lineOver:=True; //不含“电费”字样
end
else lineOver:=True;
if lineOver then break; //读下一行数据 转到while
end; delete(myStr,1,4); //删去“电费”
trim(myStr);
if not myStr=''
then begin
spaceLoc:=0;
for i:=1 to StrLen(PChar(myStr))
begin
spaceLoc:=0;
if myStr[i]=' ' //空格
then begin
spaceLoc:=i;
break;
end;
end; if spaceLoc=0 then break //找不到正确位置,读下一行数据
else begin
headStr:=myStr;
delete(headStr,spaceLoc,StrLen(PChar(myStr))-spaceLoc+1) //去掉后面只留数字
resultStr:=' '+IntToStr(trunc(StrToFloat(headStr)*100));
end;
//在有存款记录的情况下,继续
delete(myStr,1,spaceLoc);
trim(myStr);
if (myStr='三月')
then begin
resultStr:='858423'+' '+resultStr+' 3 1';
writeln(DestFile,resultStr);
//满足以上所有条件,才终于可以写记录。
end;
end; end;
end; //while not Eof
CloseFile(DestFile);
CloseFile(sourceFile);
end;
师弟,你也中招啦!怎么?难道你跟他有一,.,.,.,.,.,,.腿.,.,.,.,.,.,.,
俺有观音姐姐的相片要不?
俺有观音姐姐的相片要不?
伤伤伤伤伤■■■伤■■■伤伤伤伤伤伤伤伤 心心心心心心心心心心心心心心心心心心心心
伤伤伤伤■■■伤伤■■■伤伤伤伤伤伤伤伤 心心心心心心心心心■■■心心心心心心心心
伤伤■■■■伤伤■■■■■■■■■■■■ 心心心心心心心心心■■■心■■■心心心心
■■■■■■伤■■■伤伤■■伤伤伤■■伤 心心■■心心心心■■■心心■■■■心心心
■■■■■■■■■伤伤伤■■伤伤伤伤伤伤 心心■■■■■心■■■心心■■■心心心心
伤伤伤■■■伤伤■■■■■■■■■■■伤 心■■■■■■■■■心心■■■心心心心心
伤伤伤■■■伤伤伤伤伤■■■伤伤■■■伤 心■■■心■■■■心心■■■心心心心心心
伤伤伤■■■伤伤伤伤伤■■伤伤伤■■■伤 ■■■■心心心■■■■■■心心心心心心心
伤伤伤■■■伤伤伤伤■■■伤伤■■■伤伤 ■■■心心心心心■■■■■■心心心心心心
伤伤伤■■■伤伤伤■■■伤伤伤■■■伤伤 ■■■心心心心心心心■■■■■■■■■■
伤伤伤■■■■■■■■伤伤伤■■■伤伤伤 ■■心心心心心心心心心■■■■■■■■■
伤伤■■■■■■■伤■■■■■■■伤伤伤 心心心心心心心心心心心心心■■■■■■心
伤伤伤■■伤伤伤伤伤伤伤■■■■伤伤伤伤 心心心心心心心心心心心心心心心■■心心心
mBackColor: TColor = clWhite): string; { 文本花式 }
var
I, J: Integer;
S: string;
begin
Result := '';
for J := mRect.Top to mRect.Bottom do begin
S := '';
for I := mRect.Left to mRect.Right do
Result := Result + Iif(mCanvas.Pixels[I, J] = mBackColor, '□', '■'));
Result := Result + S + #13#10;
end;
end; { CanvasToGBText }
用TImage载入中
用处理到文本次
IDE 替换排版后