![]() |
zeilenzugriff im memo
hi,
ich hab folgendes vor: In ein memo wird vom benutzer ein text eingefügt. nach nem klick auf nen button wird der text nach Signalwörtern durchsucht, die im text stehen. In jeder zeile steht ein anderes Signalwort. Nun soll immer eine bestimmte Zeile, die das entsprechende wort enthält in eine variable kopiert und weiterverarbeitet werden. jetzt meine frage: Wie kann ich diese Zeile kopieren?? Falls ihr euch fragt wozu ich das brauche: Ich spiel ein Rollenspiel in dem die Fertigkeiten die man erlangt vom Gildenchef beurteilt werden. zum Beispiel: "Anvar sagt: Windstoss beherrscht du meisterhaft". Es gibt 18 verschiedene Beurteilungen, und meisterhaft ist die 15. beste. Nun hab ich diese Beurteilungen "graphisch" dargestellt. z.b: Windstoss[###############...] Bei über 30 fertigkeiten fehlt mir aber die lust, jedes mal alles durchzuschaun und zu aktualisieren, deshalb will ich das prog schreiben ;P Die ausgabe, wie gut man eine fertigkeit beherrscht erfolgt immer gebündelt, das heisst, man bekommt immer alle fertigkeiten auf einmal gesagt - in jeder zeile eine. Und nun wollte ich, dass das programm die zeilen findet und die beurteilung in # umwandelt. Wer jetzt denkt, dass ich zu viel zeit habe, der hat sicherlich recht. ich hoffe mal dass das nicht zu kompliziert war und ich ein paar gute antworten bekomme. mfg Bandobras |
Re: zeilenzugriff im memo
Moin Bandobras,
also was mir dazu auf Anhieb einfällt: Gehe in einer Schleife durch die Zeilen des Memos, und suche dann darin, z.B. mit pos, nach den möglichen Schlüsselworten. |
Re: zeilenzugriff im memo
danke christian.
darüber hatte ich anfangs auch nachgedacht, aber da hat sich mir das problem aufgetan, dass ich nicht weiss, wie ich die beurteilung der fertigkeit zuordnen soll. |
Re: zeilenzugriff im memo
Erst eine For-Schleife, in der du nach den Schlüsselwörtern suchst.
Danach eine Case-Of Schleife, die feststellt, um welches Schlüsselwort es sich handelt und die dementsprechend das SChlüsselwort umwandelt. mfg, gordon
Delphi-Quellcode:
case Bewertung of
'sehr schlecht': Bewertung := '[]'; 'schlecht' : Bewertung := '[#]'; //etc.... end; |
Re: zeilenzugriff im memo
ich glaube, ich hab mich zu kompliziert ausgedrückt, aber es nicht so einfach das kurz zu erklären :P
das schlüsselwort ist für mich die jeweilige fertigkeit, nicht die beurteilung. die fertigkeit und die beurteilung stehen aber in der selben zeile. Mein problem ist, jedem schlüsselwort -also jeder fertigkeit- die entsprechende beurteilung zuzuordnen. |
Re: zeilenzugriff im memo
Moin Bandobras,
poste doch bitte mal einen Beispielinhalt des Memos. So richtig verstanden habe ich das ganze jetzt nämlich nicht. ;-) |
Re: zeilenzugriff im memo
ok. so sieht das, was ich ins memo kopiere aus:
Anvar sagt: Behandle beherrschst Du absolut perfekt. Anvar sagt: Beherrschung beherrschst Du ausgezeichnet. Anvar sagt: Eiselementar beherrschst Du unglaublich gut. Anvar sagt: Eispfeil beherrschst Du phantastisch gut. Anvar sagt: Elementarhand beherrschst Du exzellent. Anvar sagt: Elementarpanzer beherrschst Du meisterhaft. Anvar sagt: Erdbeben beherrschst Du ueberdurchschnittlich. Anvar sagt: Erkenne beherrschst Du absolut perfekt. Anvar sagt: Erzelementar beherrschst Du unglaublich gut. Anvar sagt: Erzpfeil beherrschst Du absolut perfekt. Anvar sagt: Erzstrahl beherrschst Du wirklich gut. Anvar sagt: Feuerball beherrschst Du hervorragend. Anvar sagt: Feuerpfeil beherrschst Du phantastisch gut. Anvar sagt: Feuerwusel beherrschst Du ausgezeichnet. Anvar sagt: Froststrahl beherrschst Du ausgezeichnet. Anvar sagt: Hagelschlag beherrschst Du ueberdurchschnittlich. Anvar sagt: Humuselementar beherrschst Du phantastisch gut. Anvar sagt: Laehme beherrschst Du ausgezeichnet. Anvar sagt: Luftelementar beherrschst Du absolut perfekt. Anvar sagt: Luftpfeil beherrschst Du absolut perfekt. Anvar sagt: Schaetz beherrschst Du exzellent. Anvar sagt: Sturmflut beherrschst Du ueberdurchschnittlich. Anvar sagt: Wasserelementar beherrschst Du wirklich gut. Anvar sagt: Wasserpfeil beherrschst Du ausgezeichnet. Anvar sagt: Wasserstrahl beherrschst Du hervorragend. Anvar sagt: Windhose beherrschst Du ausgezeichnet. Anvar sagt: Windstoss beherrschst Du absolut perfekt. Anvar sagt: Die Fertigkeit Zaubern beherrschst Du phantastisch gut. Anvar sagt: Den waffenlosen Kampf beherrschst Du perfekt. Anvar sagt: Insgesamt betrachtet bist Du phantastisch gut. und so sieht das aus, was entstehen soll: Windstoss......[##################] Erzstrahl......[#######...........] Wasserstrahl...[############......] Froststrahl....[###########.......] Feuerball......[############......] Laehme.........[###########.......] mein problem ist halt, dass ich nicht weiss, wie ich delphi sage, dass er zu jedem schlüsselwort die beurteilung finden soll. also zu "behandle" gehört "absolut perfekt" und zu "windhose" gehört "ausgezeichnet...Das umwandeln der beurteilung in # ist nicht das problem |
Re: zeilenzugriff im memo
Hi,
ich könnte mir das so vorstellen: Erstmal bis zum Doppelpunkt + eine Stelle alles löschen. Danach alles bis zum nächsten Leerzeichen löschen. Danach alles löschen bis nach "Du" und der Rest ist die Bewertung. (Werde vllt. nachher nen Q&D-Source posten) |
Re: zeilenzugriff im memo
Oder so:
Delphi-Quellcode:
Grüße vom marabu
uses
Classes, SysUtils; function After(S, Pattern: String): String; var I: Integer; begin I := Pos(Pattern,S); if I = 0 then Result := '' else Result := Copy(S, I + Length(Pattern), Length(S)); end; function Before(S, Pattern: String): String; var I: Integer; begin I := Pos(Pattern,S); Delete(S, I, Length(S)); Result := S; end; function Between(S, Prefix, Suffix: String): String; begin Result := Before(After(S, Prefix), Suffix); end; procedure TextToGraphic(slSrc, slTgt, slGrade: TStringList); const pfx1 = 'Anvar sagt: '; sfx1 = ' '; pfx2 = 'beherrschst Du '; sfx2 = '.'; var sAbility, sGrade: string; i, iGrade: integer; begin slTgt.Clear; for i := 0 to slSrc.Count - 1 do begin sAbility := Between(slSrc[i], pfx1, sfx1); sGrade := Between(slSrc[i], pfx2, sfx2); iGrade := Succ(slGrade.IndexOf(sGrade)); slTgt.Values[sAbility] := StringOfChar('#', iGrade); end; end; function CreateGrades: TStringList; begin Result := TStringList.Create; // schlechtesten Rang zuerst hinzufügen Result.Add('absolut perfekt'); end; |
Re: zeilenzugriff im memo
hmm...irgendwie versteh ich den code nicht. was ist sAbility oder pfx1 oder sfx2...könntest du das bitte etwas auskommentieren?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 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-2025 by Thomas Breitkreuz