![]() |
Buchstaben sortieren aus einem Memofeld
(A)Hoi,
Ich wollte gerne ein programm schreiben, bei dem man einen Text ein gibt und auf Knopfdruck soll dieser ''Sortiert'' werden, d.h. alle A's alle B's und so weiter sollen hinter ein ander in ein zweites Memofeld geschrieben werden, zuvor soll aber die ausgangsposition der Buchstaben gespeichert werden so das der Text hinterher wieder rekonstuiert werden kann Beispiel: Eine Ente geht spatzieren. <----------> aEeEeeeeghiinnnprstttz |
Re: Buchstaben sortieren aus einem Memofeld
Und was ist deine Frage?
|
Re: Buchstaben sortieren aus einem Memofeld
öhm , ja mir fehlt jegweder ansatz gibts ne funktion mit der ich nen memo text nach nem bestimmten Buchstaben dursuchen kann oder mit dem ich irgend wie arbeiten kann???
Für alles offen^^ |
Re: Buchstaben sortieren aus einem Memofeld
-Pos()/PosEx()
-StrScan() |
Re: Buchstaben sortieren aus einem Memofeld
Danke schon mal, aber diese Hilfe aus der Delphihilfe ist ein wenig verwirrend , kamm ir jemand ein Beispiel geben?
Zitat:
PS: Mit StrScan kann ich leider nicht mein Memo absuchen, da ich die fehlermeldung bekomme: Inkompatible Typen TString und PAnsiChar, leider konnte ich auch über die Hilfe nicht viel über ein PAnsiChar herrausfinden, was muss ich tun??? |
Re: Buchstaben sortieren aus einem Memofeld
Delphi-Quellcode:
ergibt 7, weil das erste Vorkommen vom 1.String an 7. Stelle im 2.String beginnt.
p := Pos( 'Du', 'Hallo Du');
Das PosEx() erweitert das Ganze um eine Offset, ab dem gesucht wird
Delphi-Quellcode:
ergibt also 9.
p := PosEx( 'Du', 'Hallo DuDu!', 8);
[Edit: PAnsiChar ist ein Zeiger auf einen String
Delphi-Quellcode:
]
p := PAnsiChar(<String>);
|
Re: Buchstaben sortieren aus einem Memofeld
Danke, mal sehn obs geht, sonst meld ich mich nochma :thumb:
|
Re: Buchstaben sortieren aus einem Memofeld
Hmmm du könntest dich vielleicht mit Bucketsort beschäftigen?
Dafür würde ich dann ein zweidimensionales Array nehmen und vorher einen Record typisieren, in der du Zeichen/Position speicherst.
Delphi-Quellcode:
Und jetzt musst du zuerst dein Array initialisieren:
type
TCharPosArr = record CharPosArr : array of TCharPos; CharSet : TSysCharSet; // Darin kann man mehrere Zeichen speichern die du dann mit "in" überprüfen kannst end; TCharPos = record C : Char; // Zeichen P : Integer; // Position end; var CharPos : array [0..25] of TCharPosArr;
Delphi-Quellcode:
Das kannst du natürlich auch in eine Schleife packen (wobei du dann die Umlaute (evtl.) mit beachten musst!).
CharPos[0].CharSet := ['aAäÄ']; // d.h. alle a/A/ä/Ä werden darein sortiert
CharPos[1].CharSet := ['...']; Und dann gehst du jetzt jedes Zeichen durch und testest, ob das Zeichen zu den erstem zum zweiten etc. passt:
Delphi-Quellcode:
Ich hoffe das war einigermaßen verständlich.
if Str[i] in CharPos[j].CharSet then
begin // Einen neuen Eintrag anfügen SetLength(...); CharPos[High(CharPos)].... // Und dann das Gesuche des richtigen "Korbes" abbrechen Break; end; MfG xZise |
Re: Buchstaben sortieren aus einem Memofeld
Hallo,
eine ![]() Gruß Hawkeye |
Re: Buchstaben sortieren aus einem Memofeld
Hi, back to the problem... ;)
Ich lasse mein Programm die Eingabe in eine StringList einlesen, dann setze ich meine zwei dynamischen Arrays auf die Lenge der Eingabe.... wie auch immer... dann lasse ich den Buchstaben in dem einen Array abspeichern und die Position in dem anderem Array... mein letztes ''Problem'' besser meine Frage: Gibt es keine Möglichkeit die Buchstaben nicht alle selbst eingeben zu müssen, gibt es nicht irgendwo ein Alphabet in Delphi welches ich in ne Stringliste einlesen kann oder so? So dass ich später ne for to do nehmen kann also for i:=0 to Alphabetliste.Count do begin Buchstabe:=Alphabetliste[i]; end; oder zumindest so ähnlich??? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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 by Thomas Breitkreuz