Hallo,
Ik zit met het volgende probleem:
AStr := 'aaaaaa';
Result := UpCase(AStr[1]);
Ik verwacht dat Result := 'Aaaaaa' is maar ik krijg alleen maar een 'A' te zien en niet de rest van de string.
Hoe los ik dat op?
H.G. Frans
Hallo,
Ik zit met het volgende probleem:
AStr := 'aaaaaa';
Result := UpCase(AStr[1]);
Ik verwacht dat Result := 'Aaaaaa' is maar ik krijg alleen maar een 'A' te zien en niet de rest van de string.
Hoe los ik dat op?
H.G. Frans
AStr[1] := Upcase(AStr[1]);
Result := AStr;
Controleer ook of je string niet leeg is, want dit is een potentiële AV.
Last edited by PSterk; 20-Sep-14 at 20:59.
De string is niet leeg maar ik zal het wel testen. Het simpelste is er een spatie achter te zetten.
Ik zie nu wat ik vergeten was. Het moet inderdaat zijn AStr[1] := ....
Bedankt, Frans
Werkt (in Lazarus) natuurlijk alleen als 1e karakter lower ASCII is (LCL is UTF-8).
Bart
Persoonlijk ga ik voor een nettere oplossing.
Peter
Delphi Code:
{ TForm1 } Function MaakUpcase(Regel: String): String; Begin Result := UpperCase(Copy(Regel, 1, 1)) + LowerCase(Copy(Regel, 2, Length(Regel)-1)); End; procedure TForm1.FormCreate(Sender: TObject); begin Label1.Caption := MaakUpcase('testregel'); end; end.
10.4.2, Delphi2010, of Lazarus 2.2.0
Probeer dit eens (in een LCL application):
Delphi Code:
MaakUpcase('óóh wat mooi');
Bart
Uppercase heeft zijn beperkingen
Description
UpperCase returns the uppercase equivalent of S. Ansi characters are not taken into account, only ASCII codes below 127 are converted.
It is completely equivalent to the UpCase function of the system unit, and is provided for compatiibility only.
Deze werkt
Delphi Code:
Function MaakUpcase(Regel: String): String; Begin Result := AnsiUpperCase(Copy(Regel, 1, 1)) + AnsiLowerCase(Copy(Regel, 2, Length(Regel)-1)); End; Function UTF8UpperFirst(Value:UTF8String):UTF8String; var temp:WideString; begin temp:=UTF8Decode(Value); if length(temp) > 0 then temp[1]:=WideUpperCase(temp[1])[1]; Result:=UTF8Encode(temp); end; Procedure TForm1.FormCreate(Sender: TObject); begin Label1.Caption := MaakUpcase('óóh wat mooi'); label2.Caption := UTF8UpperFirst('óóó Wat mooi'); end;
Gr. Peter
Last edited by Wok; 21-Sep-14 at 14:11.
10.4.2, Delphi2010, of Lazarus 2.2.0
UTF, Unicode & alle aanverwanten blijf ik lastig vinden.
Bart, Je oplossing is mooier dan mijn eerste :-)
De Utf oplossing kwam ik tegen op lazarus forum, en die werkt ook.
Maar door een string netjes te splitsen zoals ik het voorbeeld krijg je een betrouwbaar resultaat.
:-)
Peter
10.4.2, Delphi2010, of Lazarus 2.2.0
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks