Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Textformatierung (https://www.delphipraxis.net/90483-textformatierung.html)

tibo 18. Apr 2007 11:40


Textformatierung
 
Also ich weiss nicht ob das hier richtig ist da ich noch neu bin aber ich versuch es einfach mal.
Ich muss in info ein Projekt schreiben zum Thema Textformatierung-Anwendung in der Arbeit mit Zeichenketten/Kryptologie.
Ich hab bis jetzt einige Funktionen geschrieben jedoch komme ich bei Text Sperren, Spiegeln, Klein in Groß und Rückgängig nicht weiter und konnte auch in Internet keine Hilfe / Ansätze finden.
Könnt ihr mir Helfen und oder Ansätze für eine Lösung geben. Es geht halt darum das ein Text in ein Edit-Feld eingegeben wird und durch klicken, der entsprechenden Button, verändert wird.
Ich danke im Vorraus!!

mkinzler 18. Apr 2007 11:43

Re: Textformatierung
 
Einfach Schleife über Buchstaben:

Delphi-Quellcode:
for i := to Length( str) do
begin
    Mach was mit str[i]
end;

Der_Unwissende 18. Apr 2007 13:00

Re: Textformatierung
 
Hi und erstmal Herzlich Willkommen in der DP :dp:

Was mkinzler schon gezeigt hat, prinzipiell kannst Du Dir einen String immer wie ein Array (dynamischer Größe) von einzelnen Zeichen vorstellen. Ein solches Array hat eine bestimmte Länge, die mit length ermittelt werden kann. Damit der gezeigte Code funktioniert musst Du natürlich noch einen Startwert für i mit angeben. Das erste Zeichen findest Du bei Strings dabei an der Stelle 1 (bei anderen dyn. Arrays wäre es die 0).

Die wichtigsten String-Funktionen findest Du in den Units SysUtils und StrUtils (in der OH findest Du eine Liste aller Funktionen). Die Funktionen lassen sich leicht über den Namen finden (rate mal was UpperCase macht).
Möchtest Du einen String "per Hand" spiegeln (es gibt schon eine Funktion, die das kann), dann wirst Du wahrscheinlich den original String Zeichen für Zeichen durchgehen und an die entsprechende Stelle in einen anderen (neuen) String einfügen, der dann das inverse darstellt. Dabei musst Du aber eine Sache beachten, man kann nur auf die Stellen im Speicher zugreifen, die bereits für den Zugriff reserviert wurden. Bei Strings passiert das ganz im Hintergrund, ein
Delphi-Quellcode:
var s, s2: String;
reserviert noch keinen Speicher, der String ist nur ein Zeiger auf den leeren String. Bei der Verwendung
Delphi-Quellcode:
s := 'Hallo';
wird im Hintergrund einfach Speicher für Dich reserviert und dann der Wert des statischen String ('Hallo') in diesen Speicher kopiert. Möchtest Du jetzt auf einen zweiten String (s2) zugreifen und hier an der letzten Stelle ein 'H' hinschreiben, dann hast Du das Problem, dass für s2 noch gar kein Speicher reserviert wurde. Dies kannst Du mit der Funktion setLength nachholen (und müsstest Du machen, bevor Du auf den Speicher zugreifen kannst)
Delphi-Quellcode:
// würde hier noch zu Fehler führen
s2[5] := 'H';

// reservieren von Speicher
setLength(s2, 5);
// jetzt klappt's auch!
s2[5] := 'H';
setLength musst Du natürlich nur einmal aufrufen, wenn Du eine neue Größe möchtest, danach hat der übergebene String die richtige Größe.

Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:40 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