![]() |
Länge eines Strings
Hallo,
Ich habe folgendes Problem: Ich habe ein TLabel oder TEdit mit fest definierter größe. Darin wird ein Text-String ausgegeben was ja nichts besonderes ist. Gerade beim TEdit interessiert es mich vorher ob der String von der Länge her in den TEdit passt. D.h., ich benötige lediglich eine Möglichkeit festzustellen was größer ist, der String oder TEdit. Die "Width" von TEdit habe ich ja aber wie komme ich an die "Width" von dem String ? 'Length' ist hier nicht ausreichend da es lediglich die Anzahl der character zurückgibt und - mmmmm - iiii haben ja nun mal unterschiedliche Längen. Gruß, Karsten |
Re: Länge eines Strings
length(DeinString)
gruss |
Re: Länge eines Strings
Label1.Canvas.TextWidth(Label1.Caption);
Gruß... ...Matthias |
Re: Länge eines Strings
ja nun, aber ist es nicht so daß length() die Anzahl der character zurück gibt und der Wert 'Width' des Edit nicht umbedingt in character angegeben wird, sondern in Pixeln.
d.h., was ich benötige ist ein vergleich beider Größen. Trotzdem danke, Karsten |
Re: Länge eines Strings
Richtig, der Canvas hatte so etwas wie einen TextWidth. Werde mal sehen wie ich mir das zusammen frickel.
Interessant wieviele von Euch noch um diese Uhrzeit vor dem Rechner sitzen. Danke, Karsten |
Re: Länge eines Strings
Mit Canvas wirst du bei TEdit einige Probleme bekommen.
Daher hab ich mal schnell einige unabhänige Routinen erstellt. Wie zu erkennen ist, muss nur der Text und der dazugehörige Font übergeben werden.
Delphi-Quellcode:
Viel Spass damit,
{© by Himitsu @ Delphi-PRAXiS}
Function TextLaenge(Font: TFont; Text: String): Integer; Var B: TBitMap; Begin B := TBitMap.Create; B.Canvas.Font := Font; Result := B.Canvas.TextWidth(Text); B.Free; End; Function TextHoehe(Font: TFont; Text: String): Integer; Var B: TBitMap; Begin B := TBitMap.Create; B.Canvas.Font := Font; Result := B.Canvas.TextHeight(Text); B.Free; End; (* Beispiel für einen Aufruf der Funktion(en) *) Procedure TForm1.Button1Click(Sender: TObject); Var I: Integer; Begin (* Wichtig: * * Es muß der Font angegeben werden, * * der auch für die Darstellung des * * entsprechenden Textes verwendet wird *) I := TextLaenge(Edit1.Font, Edit1.Text); Label1.Caption := IntToStr(I); End; Frank :zwinker: Habe es dieses mal sogar getestet. |
Re: Länge eines Strings
Absolut genial :thuimb:.
Danke, Karsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz