Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Länge eines Strings (https://www.delphipraxis.net/11098-laenge-eines-strings.html)

Karsten 31. Okt 2003 00:07


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

MrKnogge 31. Okt 2003 00:08

Re: Länge eines Strings
 
length(DeinString)

gruss

matthiasl 31. Okt 2003 00:37

Re: Länge eines Strings
 
Label1.Canvas.TextWidth(Label1.Caption);

Gruß...
...Matthias

Karsten 31. Okt 2003 00:51

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

Karsten 31. Okt 2003 00:58

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

himitsu 31. Okt 2003 07:49

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:
{© 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;
Viel Spass damit,
Frank

:zwinker: Habe es dieses mal sogar getestet.

Karsten 31. Okt 2003 12:18

Re: Länge eines Strings
 
Absolut genial :thuimb:.

Danke,
Karsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz