Einzelnen Beitrag anzeigen

DieFliege

Registriert seit: 6. Aug 2013
54 Beiträge
 
Delphi XE4 Professional
 
#7

AW: Erhalte vom Programm "Keine Rückmeldung" - Speicherüberlauf?

  Alt 10. Nov 2015, 19:31
Hallo Günther,

vielen Dank für Deine Rückmeldung.

Du hast Recht, wenn kein Leerzeichen vor der Textbreite kommt, brummt das Programm auf. Da ich aber weiß, dass es keine Zeichenkombination geben wird, die länger als 50 oder gar 60 Zeichen geben wird, habe ich das mal außer acht gelassen.

"WrapText" habe ich gerade kennen gelernt und beschäftige mich nun damit.

Ich erkläre mal kurz, was ich mir bei der Funktion gedacht habe:
Ich nutze eine WHILE-Schleife so lange, bis der Rest des Strings kleiner ist als die Textbreite. Dabei nutze ich 2 Strings mit anfänglich identischen Inhalt. Zunächst suche ich das erste Leerzeichen und übergebe die Position einer Variablen. nun lösche ich den text bis zum ersten Leerzeichen in der Kopie des Kopiestrings und suche nach den nächsten Leerzeichen. Die Position des neuen Leerzeichens kopiere ich zur letzten Position und prüfe ob damit die Textbreite überschritten wird. Wird sich überschritten, nutze ich die Gesamtpositionen aller Leerzeichen dazu, um vom Originaltext den Teil raus zu kopieren und in die Ergebnisstringvarible zu kopieren und lösche dann den kopieren Teil aus dem Originalstring. nun geht das ganze wieder von vorne los, bis der Rest des Kopiestrings kleiner ist als die Textbreite und dann endet die WHILE.

Ich weiss, vermutlich ganz schön kompliziert - zu kompliziert, aber es funktioniert.

Nutze ich nun statt "text := text + mehrtext" den StringBuilder, funktioniert es genauso und brummt bei ausgelastetem Rechner auf.

So, werde nun WrapText" lernen

LG Micha
  Mit Zitat antworten Zitat