V
Hallo,
auch wenn es die Neulinge vielleicht verwirrt, und vielleicht an der Frage vorbei, aber im Grundsatz hat sich dieser Thread vom eigentlichen Problem wegentwickelt, Der AnsiString ist die Nachbildung der Stringklasse von Pascal. Die muss im C++ Builder enthalten sein, damit die VCL angesprochen werden kann, da diese ja bekanntlich in Pascal implementiert ist. Es geht nicht darum, etwas für die BCB- Entwickler zu vereinfachen, denn dann hätte man die vorhanden C++- Klasse gekapselt und um Funktionen ergänzt. Auch TStringList, TDateTime, ... sind Typen, die innerhalb der VCL benötigt werden, und im C++ Builder daher nachgebildet werden mussten. Und genauso mussten ja in Delphi Klassen und Funktionen geschrieben werden, um mit der Windows-API zusammenzuarbeiten, die ja bekanntlich in C/C++ geschrieben ist, und daher die Pascal- Typen nicht versteht. Wenn man jetzt überlegt, wie Pascal mit Strings umgeht, dann war der etwas mit dem ersten Element, in dem die Länge gespeichert wird. C/C++ machen das auch nicht, es erzeugt auch für die Programmierungen einen unverhältnismäßig grossen Aufwand, immer diese Längeangabe zu pflegen. Hier wird einfach eine binäre Null ans Ende geschrieben.
Gerade die Verwendung dieser Delphi- Typen bringt aber die Abhängigkeiten zum BCB, aus denen man nur sehr schwer herauskommt. Dabei hat doch C++ alles. Es gibt da tatsächlich einen eigenen string- Typ, man muss ja nicht mit lowlevel- Funktionen kämpfen. Vielleicht einfach einen ostrstream nehmen, und entsprechend ausgeben? Ich denke, man sollte mit dem BCB programmieren, und nicht, wie es leider auch aus dieser Diskussion herausklingt, für den BCB.
Aber eines stimmt auch noch in diesem Thread, auch wir haben viel Zeit in die Internationalisierung von Anwendungen gesteckt. Hier ist die alte Methode mit sprintf tatsächlich die einfachste, da die Satzstellungen in verschiedenen Sprachen unterschiedlich sind, und ich nur eine Zeichenkette speichern muss, die dann mit Parametern aufgefüllt wird. Und damit zum Problem der Frage und einiger Antworten hier, was ist die einfachste Methode, nach der gefragt wurde? Die Antwort hängt doch von so vielem ab, muss die Anwendung mal portiert werden, muss sie mal internationalisiert werden, arbeit sie mit anderen Bibliotheken zusammen, ... Es wäre doch zu schön, wenn es immer eine "einfache" Methode geben würde.
Schöne Grüße aus Berlin
Volker