文字列の40文字しか使用できないデータベース列があります。したがって、文字列の長さが40文字を超えると、エラーが発生します。文字列をデルファイで40文字にカット/トリミングするにはどうすればよいですか?
user1556433
質問する
21637 次
4 に答える
23
var
s: string;
begin
s := 'This is a string containing a lot of characters.'
s := Copy(s, 1, 40);
// Now s is 'This is a string containing a lot of cha'
文字列が切り捨てられた場合に省略記号を追加して、これをより明確に示すことをお勧めします。
function StrMaxLen(const S: string; MaxLen: integer): string;
var
i: Integer;
begin
result := S;
if Length(result) <= MaxLen then Exit;
SetLength(result, MaxLen);
for i := MaxLen downto MaxLen - 2 do
result[i] := '.';
end;
var
s: string;
begin
s := 'This is a string containing a lot of characters.'
s := StrMaxLen(S, 40)
// Now s is 'This is a string containing a lot of ...'
または、すべてのUnicode愛好家のために、単一の省略記号文字を使用して、さらに2つの元の文字を保持できます…(U + 2026:HORIZONTAL ELLIPSIS):
function StrMaxLen(const S: string; MaxLen: integer): string;
var
i: Integer;
begin
result := S;
if Length(result) <= MaxLen then Exit;
SetLength(result, MaxLen);
result[MaxLen] := '…';
end;
var
s: string;
begin
s := 'This is a string containing a lot of characters.'
s := StrMaxLen(S, 40)
// Now s is 'This is a string containing a lot of ch…'
しかし、その場合は、すべてのユーザーとその親戚がこの珍しいキャラクターをサポートしていることを確信している必要があります。
于 2013-02-18T12:27:39.110 に答える
18
あなたはSetLength
この仕事に使うことができます:
SetLength(s, Min(Length(s), 40));
于 2013-02-18T12:31:16.873 に答える
14
var s : string;
begin
s := 'your string with more than 40 characters...';
s := LeftStr(s, 40);
于 2013-02-18T12:29:45.727 に答える
0
Javaのこのソリューションに触発されて、私のソリューションは次のようなものでした(非常に長い可能性のあるパスを短くします)
const
maxlen = 77; // found this by entering sample text
begin
headlineTemp := ExtractFileName(main.DatabaseFileName);
if length(main.DatabaseFileName) > maxlen then
begin
pnlDBNavn.Caption :=
MidStr(
main.DatabaseFileName, 1,
maxlen -3 - length(headlinetemp)
) + '...\' + headlineTemp;
end
else
// name is shorter, so just display it
pnlDBNavn.Caption := main.DatabaseFileName;
end;
于 2021-01-14T19:25:24.543 に答える