Formatierung in CString
-
Hi,
gibt es eine einfachere Lösung für folgendes Problem:
"ok" immer an definierter Stelle schreiben, so dass alle untereinander stehen.
DasIstEinLangerName.....ok
NochEiner........................ok
Kurz.................................okBisher zähle ich die Buchstaben und fülle den Rest, bis zu einer bestimmten Stelle, mit Punkten auf. Gibt es da evtl. eine einfachere Möglichkeit das zu machen??
Greetz
Legolas
-
Tabulatoren sind besser. Bei Punkten musst du dir sicher sein, dass du mit einem fixed Font arbeitest, sonst kommt das auch nicht hin.
-
Jo und Btw ist CString eine MFC und keine Standard Klasse (o:
Was vielleicht etwas hilfe bietet wäre noch die CString::Format Methode... aber ich glaub da kannst du nur das benutzen, was sprintf bietet...
-junix
-
Geht es denn um Konsolenanwendungen oder ein Windows-UI?
-
Okee, aber das ist nicht meine eigentliche Frage.
Ich wollte eigentlich eher einen bessere Lösung zu:- GetLength von dem ersten String
- zeichne so viele Punkte bis der gesamte String z.B. 60 Zeichen lang ist
- dann noch ein "ok" bzw. "error" drangehängtoder macht man das einfach so?
Die Punkte brauch ich deshalb, weil sehr viele Zeilen so bearbeitet werden sollen und damit ein "verrutschen" beim lesen nicht so leicht passieren kann.
edit:
- Ist eine Konsolenanwendung, welche aber mit CStrings (MFC-Klassen) arbeitet.
- Mit Format ist da glaub nicht viel zu machen ...Legolas
-
Also Deine Texte in den Beispielen waren alle ohne Lehrzeichen, deshalb würde ich folgendes vorschlagen...
CString str; // 20 Zeichen linksbündig breit str.Format("%-20s", txtvar); str.Replace(" ", "."); str += errvar;Dazu noch eine Schriftart mit fester Zeichenbreite und es sollte eigentlich klappen
-
Gracias,
die Methode gefällt mir doch etwas besser

Legolas
-
str+=str.Length()+" ";//scnredit: die 20 leerzeichen waren ohne code-tag nicht sichtbar. *g*
-
Legolas schrieb:
Bisher zähle ich die Buchstaben und fülle den Rest, bis zu einer bestimmten Stelle, mit Punkten auf. Gibt es da evtl. eine einfachere Möglichkeit das zu machen??
einfacher? kaum.
höchstenswhile(str.Length()<20) str+=".";das wirkt aber nicht gerade extrem schnell. für was schnelles muß ich mal die members von CString erst angucken.
...
hab geguckt.
str.GetLength() heißts und wenn ich mir FreeExtra ansehe, scheits so, als sei += effizient genug. und +='.' geht.