AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringlänge parsen

Ein Thema von EWeiss · begonnen am 4. Sep 2017 · letzter Beitrag vom 7. Sep 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Stringlänge parsen

  Alt 4. Sep 2017, 12:44
Du suchst doch nicht die Länge des Strings sondern den benötigten Platz zur Darstellung des Strings auf einem Canvas, oder?
Dazu nimmt man DrawText mit dem Paramter DT_CALCRECT
Ich möchte die gesamte länge eines String parsen\vergleichen bsp. von 30 Einträgen und den längsten davon
verwenden um mein Sub Menu auf die weite auszurichten.

DT_CALCRECT hilft mir nicht ist aber auch nicht wichtig da ich es mit meiner Funktion
GDIP_GetTextBound nachher in Pixeln exakt ermittle wenn ich den längsten string habe.

Zitat:
Length(string)
Und ich sagte ja schon das ich weis das es mit Length geht aber ich muss etwas schnelles haben vielleicht in einem rutsch

gruss
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
10.010 Beiträge
 
Delphi 12 Athens
 
#2

AW: Stringlänge parsen

  Alt 4. Sep 2017, 12:47
DT_CALCRECT hilft mir nicht ist aber auch nicht wichtig da ich es mit meiner Funktion
GDIP_GetTextBound nachher in Pixeln exakt ermittle wenn ich den längsten string habe.
Der nach Zeichen längste String ist aber nicht unbedingt der, der den meisten Platz beim Zeichnen benötigt...
Verschiedene Zeichen sind ja unterschiedlich breit.

Zitat:
Length(string)
Und ich sagte ja schon das ich weis das es mit Length geht aber ich muss etwas schnelles haben vielleicht in einem rutsch
Bei Delphi-Strings geht es kaum schneller als mit Length, denn das liest ja nur die Längenangabe aus, die vor dem String steht.

// EDIT:
Die beim Zeichnen längste Zeile wirst du wohl am einfachsten bekommen, wenn du alle Strings in mehreren Zeilen nimmst und gesammelt an die Funktion zur Größenermittlung gibst. Das ist vermutlich nicht besonders schnell, aber zuverlässig und schneller als jeden Text einzeln anzufragen.
Sebastian Jänicke
AppCentral

Geändert von jaenicke ( 4. Sep 2017 um 12:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Stringlänge parsen

  Alt 4. Sep 2017, 12:52
Ich möchte die gesamte länge eines String parsen\vergleichen bsp. von 30 Einträgen und den längsten davon
verwenden um mein Sub Menu auf die weite auszurichten.

Und ich sagte ja schon das ich weis das es mit Length geht aber ich muss etwas schnelles haben vielleicht in einem rutsch
Length(string) in Assembler (Delphi 7):
Delphi-Quellcode:
  test eax, eax
  jz +$03
  mov eax, [eax-$04]
  ret
Schneller wirds nicht.
Außerdem in extremen Fällen können kürzere Strings (Anzahl der Zeichen) länger (in Pixeln) sein als andere längere Strings (Anzahl der Zeichen) (<-- Verwirrender Satz aber ich hoffe du weißt was ich meine )

z.B.

WWWW (Length = 4)
iiiiiiiiiiii (Length = 12)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General ( 4. Sep 2017 um 12:54 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Stringlänge parsen

  Alt 4. Sep 2017, 12:56
Zitat:
(<-- Verwirrender Satz aber ich hoffe du weißt was ich meine )
jo ich weis schon

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Stringlänge parsen

  Alt 4. Sep 2017, 12:58
Zitat:
(<-- Verwirrender Satz aber ich hoffe du weißt was ich meine )
jo ich weis schon

gruss
Gut. Denn das heißt:
Zitat von EWeiss:
Ich mache es hier mit aber erst dann wenn ich den längsten String ermittelt habe. (einmalig..)
wird nicht funktionieren
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Stringlänge parsen

  Alt 4. Sep 2017, 13:03
Zitat:
Meine oben genannte Funktion gibt die Länge eines Strings in Pixeln zurück.
Mit QuickSort kannst du dann sehr einfach den längsten String raussuchen.
Ich sagte doch, ich verwende GDI+ und mixe das nicht mit der Winapi.
mit meiner Funktion bekomme ich die exakte länge über boundingBox noch genauer geht's nicht.

Wenn es nicht mit einmalig geht dann muss ich wohl oder übel alle Strings da durchlaufen lassen.
Danke.

PS:
Mit DPI ist kein Problem da habe ich auch eine Funktion die ich schon in meinem C++ Example verwende.
Spielt aber keine rolle es passiert gar nichts solange wie ich DPI Aware nicht zulasse.
Denn dann wird auch nichts vergrößert.

gruss

Geändert von EWeiss ( 4. Sep 2017 um 13:06 Uhr)
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#7

AW: Stringlänge parsen

  Alt 4. Sep 2017, 13:14
Zitat:
und mixe das nicht mit der Winapi.
Habe ich mittlerweile schon öfter gehört. Ich verstehe gar nicht, was manche Leute gegen die Winapi haben.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Stringlänge parsen

  Alt 4. Sep 2017, 13:21
Zitat:
und mixe das nicht mit der Winapi.
Habe ich mittlerweile schon öfter gehört. Ich verstehe gar nicht, was manche Leute gegen die Winapi haben.
Ich habe nichts dagegen aber wenn du meine Funktion einmal anschaust wirst du feststellen es gehört etwas mehr dazu.

Und ich arbeite mit der Win32API.. aber ich mixe nicht den Font der in GDI+ erstellt wurde mit dem von der Winapi.. denn das sind 2 paar Schuhe.

Trotzdem Danke.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 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