有谁成功地使用过StrLower这个函数吗?(100分)

  • 主题发起人 guest2000
  • 开始时间
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
对于strlower,我用DELPHI自带的例子都access vio...错误,怎么回事?

附:
VCL Reference
StrLower function

See also Example
Converts a string to lowercase.

Unit

SysUtils

Category

string handling routines (null-terminated)

function StrLower(Str: PChar): PChar;

Description

StrLower converts Str to lowercase and returns Str.

Note: If the source string contains international characters, use AnsiStrLower instead. If the source string is a Pascal string, use LowerCase (or AnsiLowerCase) instead.

StrLower Example

uses SysUtils;
const

S: PChar = 'A fUnNy StRiNg'
begin
Canvas.TextOut(5, 10, string(StrLower(S)) + ' ' + string(StrUpper(S)));
end;
 
S

sxqsxq

Unregistered / Unconfirmed
GUEST, unregistred user!

edit2.Text:=strlower(pchar(edit1.text));
小写转换没问题
 
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
如果都是小写我还要转换干啥:(
 
Z

zw84611

Unregistered / Unconfirmed
GUEST, unregistred user!
用LowerCase(S)和uppercase(s)
StrLower在WinNT或2k下似乎有问题

你看帮助中的note:
Note:If the source string contains international characters, use AnsiStrLower instead. If the source string is a Pascal string, use LowerCase (or AnsiLowerCase) instead.
 
S

sxqsxq

Unregistered / Unconfirmed
GUEST, unregistred user!
小写转换,没问题(我一直用没问题)
中间有个逗号
 
R

resun

Unregistered / Unconfirmed
GUEST, unregistred user!
zw84611说的对,应该用LowerCase
 
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
那是处理string的,这个我常用
这里我只是就处理pchar的strLower和strUpper讨论

to sxqsxq:
照你那样写执行正常,但总不能让我先把文本赋给edit1.text再转换吧,那可要晕倒了
 
R

resun

Unregistered / Unconfirmed
GUEST, unregistred user!
可以不用edit1.text,中间设一个string的变量就行了,转换一下有什么麻烦的?
 
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
to resun:
我在回上帖就已经如下这样试了的,我想早点解决这个问题,所以能试的我都试了,试了后
就等着下一个猜想,各位在讨论前最好也先实测一下,很有好处的:)
注意:这里要不要#0都会出错
var
iLength:Longint;
pch1,pch2:pCHar;
s1:string;
begin
s1:='Hello'#0;
pch1:=PChar(s1);
edit2.Text:=strlower(pch1);
end;
 
S

sxqsxq

Unregistered / Unconfirmed
GUEST, unregistred user!
var
iLength:Longint;
s1:string;
begin
s1:='Hello';
edit1.Text:=s1;
edit2.Text:=strlower(pchar(edit1.Text));
 
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
谢谢sxqsxq兄:
如前:"照你那样写执行正常,但总不能让我先把文本赋给edit1.text再转换吧,那可要晕倒了"
看来你还是喜欢看我晕倒的样子啊^-^

其实这里要之所以要使用PChar而不使用string,主要是为了将来在一些要求较高的场合能有较高
的处理速度和比较灵活的控制,这样通过string的转换(
Tedit.text是TCaption类型
type TCaption = type string;)
还不如直接用string处理了
我觉得我这样并不无聊吧:(

 
R

resun

Unregistered / Unconfirmed
GUEST, unregistred user!
to guest2000
edit2.Text:=strlower(pch1);改成
edit2.Text:=strlower(pchar(pch1));就没错误了,不过,不知道为什么?
 
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
to resun:
你改后的完整代码是什么,我的即使改了也照样错
 
S

sxqsxq

Unregistered / Unconfirmed
GUEST, unregistred user!
strlower(pchar(string(pch1)));
 
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
有无熟32位汇编的分析一下它的二进制代码?
 
R

resun

Unregistered / Unconfirmed
GUEST, unregistred user!
呵呵,sxqsxq说的对
 
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
难道在这里PCHAR真的离不开string?
 
R

resun

Unregistered / Unconfirmed
GUEST, unregistred user!
pchar本来就是为了兼容才设的吧,现在好像不太常用了
 
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
今夜难以入眠[:(]
 
Z

zw84611

Unregistered / Unconfirmed
GUEST, unregistred user!
老兄,何必钻牛角尖呢,LowerCase(S)和UpperCase(s)对PChar一样适用。
PChar和C语言的char*兼容,主要在调用API时才用到。
 

Similar threads

I
回复
0
查看
629
import
I
I
回复
0
查看
578
import
I
I
回复
0
查看
1K
import
I
I
回复
0
查看
3K
import
I
顶部