darkst11[退格]23[TAB]mybr111[退格][退格][退格]121[退格][退格]23[Enter]怎样把这部分数据整理成开始:darkst123
结束:mybr123
结束:mybr123
解决方案 »
- 最新版的ehlib支持多表头输出到excel吗
- delphi问题
- 如何对动态创建的窗体编写onResize或onPaint事件
- 有关HWndCalculator := Windows.FindWindow(nil, '1');的用法问题!@!!!!!
- 如何获取局域网所有用户
- 请问如何在一个过程里调用一个EDIT控件的KEYDOWN事件呢?
- 为什么在WIN2000下能运行的程序在WIN98上不能运行?
- 难。。。。
- 在delphi中怎么样建立报表?30分
- 现在那么多变成语言,不知Delphi能排老几?欢迎大家来讨论一下Delphi程序员的前途问题!!
- 如何编码实现NTFS格式下删除文件的恢复(结束篇)
- delphi Edit1只能显示整数
tab就是分割符
var
str:string;
intpos:integer;
begin
str := 'darkst11[退格]23[TAB]mybr111[退格][退格][退格]121[退格][退格]23[Enter] ';
while Pos('[退格]',str)> 0 do
begin
intpos := Pos('[退格]',str);
Delete(str,intpos-1,7); end;
str := StringReplace(str,'[Enter]','',[rfReplaceAll]); ShowMessage(str);
end;
Data = 'darkst11' + Char(VK_BACK) + '23' + Char(VK_TAB) + 'mybr111'+
Char(VK_BACK) + Char(VK_BACK) + Char(VK_BACK) + '121'+
Char(VK_BACK) + Char(VK_BACK) + '23' + Char(VK_RETURN);//处理退格键方法
function BackHandle(const source: string): string;
var
I: Integer;
begin
Result := '';
for I := 1 to Length(Source) do
if source[I] <> Char(VK_BACK) then Result := Result + source[I]
else if Length(Result) > 1 then Delete(Result, Length(Result), 1);
end;//字符串中只有一个TAB键
procedure TForm1.Button1Click(Sender: TObject);
var
aPos: Integer;
str1, str2: string;
begin
aPos := Pos(Char(VK_TAB), Data);
//处理Tab键分隔
str1 := Copy(Data, 1, aPos - 1);
str2 := Copy(Data, aPos + 1, MaxInt);
//处理退格键
str1 := '开始: ' + BackHandle(str1);
str2 := '结束: ' + BackHandle(str2);
//显示字符串内容
ShowMessage(str1 + sLineBreak + str2);
end;//字符串中存在多个TAB键
procedure TForm1.Button2Click(Sender: TObject);
var
I: Integer;
str: string;
strList: TStringList;
begin
strList := TStringList.Create;
try
//按照TAB键分隔到TStringList中
strList.Text := StringReplace(Data, Char(VK_TAB), sLineBreak, [rfReplaceAll]);
//遍历,进行每行的VK_BACK处理
for I := 0 to strList.Count - 1 do
begin
str := strList.Strings[I];
if Trim(str) = '' then Continue;
strList.Strings[I] := BackHandle(str);
end;
//显示字符串
ShowMessage(strList.Text);
finally
strList.free;
end;
end;