function SetHalftoFull(value: string):string; var yiban,i:integer; sfen,zongchang,s,temp:string; bois:boolean; begin Result := ''; yiban := FMaxLength; zongchang:=trim(value); while Length(zongchang)>0 do begin if Length(zongchang) <= FMaxLength then begin temp:= Copy(zongchang,1,yiban); s := s + temp; Delete(zongchang,1,yiban); end else begin sfen:=copy(zongchang,1,yiban); bois:=false; for i:=0 to yiban do begin if bois then bois:=False else if windows.IsDBCSLeadByte(Byte(sfen[i])) then bois:=true; end; if bois then begin Dec(yiban); temp := copy(zongchang,1,yiban); Delete(zongchang,1,yiban); s := s + temp + #13#10; end else begin temp:=copy(zongchang,1,yiban) ; Delete(zongchang,1,yiban); s := s + temp + #13#10; end; end; end; Result := s; end;临时写的函数~~~LZ试试~~~
///////Begin Source const cCharCn: array[#32 .. #126] of string[2] = ( { }' ',{!}'!',{"}'"',{#}'#',{ }'$',{%}'%',{&}'&',{'}''',{(}'(', {)}')',{*}'*',{+}'+',{,}',',{-}'-',{.}'。',{/}'/',{0}'0',{1}'1', {2}'2',{3}'3',{4}'4',{5}'5',{6}'6',{7}'7',{8}'8',{9}'9',{:}':', {;}';',{<}'<',{=}'=',{>}'>',{?}'?',{@}'@',{A}'A',{B}'B',{C}'C', {D}'D',{E}'E',{F}'F',{G}'G',{H}'H',{I}'I',{J}'J',{K}'K',{L}'L', {M}'M',{N}'N',{O}'O',{P}'P',{Q}'Q',{R}'R',{S}'S',{T}'T',{U}'U', {V}'V',{W}'W',{X}'X',{Y}'Y',{Z}'Z',{[}'[',{\}'\',{]}']',{^}'^', {_}'_',{`}'`',{a}'a',{b}'b',{c}'c',{d}'d',{e}'e',{f}'f',{g}'g', {h}'h',{i}'i',{j}'j',{k}'k',{l}'l',{m}'m',{n}'n',{o}'o',{p}'p', {q}'q',{r}'r',{s}'s',{t}'t',{u}'u',{v}'v',{w}'w',{x}'x',{y}'y', {z}'z',{{}'{',{|}'|',{ }'}',{~}'~');function StrToGBText(mStr: string): string; { 返回字符串转换成全角字符串 } var I: Integer; begin Result := ''; for I := 1 to Length(mStr) do case mStr[I] of #32 .. #126: Result := Result + cCharCn[mStr[I]]; else Result := Result + mStr[I]; end; end; { StrToGBText }function GBTextToStr(mText: string): string; { 返回字符串转换成半角字符串 } var I: Integer; J: Char; S: string; begin Result := ''; for I := 1 to Length(WideString(mText)) do begin S := WideString(mText)[I]; if Length(S) > 1 then for J := #32 to #126 do if cCharCn[J] = S then begin S := J; Break; end; Result := Result + S; end; end; { GBTextToStr } ///////End Source///////Begin Demo procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Text := StrToGBText(Memo2.Text); end;procedure TForm1.Button2Click(Sender: TObject); begin Memo2.Text := GBTextToStr(Memo1.Text); end;
var
yiban,i:integer;
sfen,zongchang,s,temp:string;
bois:boolean;
begin
Result := '';
yiban := FMaxLength;
zongchang:=trim(value);
while Length(zongchang)>0 do
begin
if Length(zongchang) <= FMaxLength then
begin temp:= Copy(zongchang,1,yiban);
s := s + temp;
Delete(zongchang,1,yiban);
end
else
begin
sfen:=copy(zongchang,1,yiban);
bois:=false;
for i:=0 to yiban do
begin
if bois then
bois:=False
else
if windows.IsDBCSLeadByte(Byte(sfen[i])) then
bois:=true;
end;
if bois then
begin Dec(yiban);
temp := copy(zongchang,1,yiban);
Delete(zongchang,1,yiban);
s := s + temp + #13#10;
end
else
begin
temp:=copy(zongchang,1,yiban) ;
Delete(zongchang,1,yiban);
s := s + temp + #13#10;
end;
end;
end;
Result := s;
end;临时写的函数~~~LZ试试~~~
const
cCharCn: array[#32 .. #126] of string[2] =
(
{ }' ',{!}'!',{"}'"',{#}'#',{ }'$',{%}'%',{&}'&',{'}''',{(}'(',
{)}')',{*}'*',{+}'+',{,}',',{-}'-',{.}'。',{/}'/',{0}'0',{1}'1',
{2}'2',{3}'3',{4}'4',{5}'5',{6}'6',{7}'7',{8}'8',{9}'9',{:}':',
{;}';',{<}'<',{=}'=',{>}'>',{?}'?',{@}'@',{A}'A',{B}'B',{C}'C',
{D}'D',{E}'E',{F}'F',{G}'G',{H}'H',{I}'I',{J}'J',{K}'K',{L}'L',
{M}'M',{N}'N',{O}'O',{P}'P',{Q}'Q',{R}'R',{S}'S',{T}'T',{U}'U',
{V}'V',{W}'W',{X}'X',{Y}'Y',{Z}'Z',{[}'[',{\}'\',{]}']',{^}'^',
{_}'_',{`}'`',{a}'a',{b}'b',{c}'c',{d}'d',{e}'e',{f}'f',{g}'g',
{h}'h',{i}'i',{j}'j',{k}'k',{l}'l',{m}'m',{n}'n',{o}'o',{p}'p',
{q}'q',{r}'r',{s}'s',{t}'t',{u}'u',{v}'v',{w}'w',{x}'x',{y}'y',
{z}'z',{{}'{',{|}'|',{ }'}',{~}'~');function StrToGBText(mStr: string): string; { 返回字符串转换成全角字符串 }
var
I: Integer;
begin
Result := '';
for I := 1 to Length(mStr) do
case mStr[I] of
#32 .. #126: Result := Result + cCharCn[mStr[I]];
else Result := Result + mStr[I];
end;
end; { StrToGBText }function GBTextToStr(mText: string): string; { 返回字符串转换成半角字符串 }
var
I: Integer;
J: Char;
S: string;
begin
Result := '';
for I := 1 to Length(WideString(mText)) do begin
S := WideString(mText)[I];
if Length(S) > 1 then for J := #32 to #126 do
if cCharCn[J] = S then begin
S := J;
Break;
end;
Result := Result + S;
end;
end; { GBTextToStr }
///////End Source///////Begin Demo
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := StrToGBText(Memo2.Text);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Memo2.Text := GBTextToStr(Memo1.Text);
end;