Autor Beitrag
elduchte
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 199

Win 2000, Win XP
Delphi 7
BeitragVerfasst: So 22.06.03 18:18 
Hallo,
wie kann ich in einem Memo-Feld nach doppelten Wörtern suchen?

Die Abfrage nach einzelnen Zeilen habe ich schon hinbekommen, doch wie weiter?

Danke und Gruß
Andreas
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Mo 23.06.03 12:40 
Hi

Also, du brauchst folgendes:
-Zwei TStringList oder TStrings
-Eine Funktion

Die muss in etwa so ausschauen:
Die Wöter einzeln druch die Leerezeichen getrennt in eine Liste aufnehmen und dann, falls ein solcher Eintrag bereits existiiert (Arbeite mit LowerCase) In die zweite Schreiben. Da hast du dann alle Wörter, die doppelt vorkommen.
Wenn du nicht weißt wie tipp ich sie dir gerne.
elduchte Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 199

Win 2000, Win XP
Delphi 7
BeitragVerfasst: Mo 23.06.03 12:53 
das Problem welches ich habe, ist die Anzahl der Zeilen des Memos zu errechen und dann aus jeder Zeile jedes Wort filtern.

Wenn du mir da nochmal helfen kannst????

Danke
Andreas
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Mo 23.06.03 12:57 
Das Problem verstehe ich nun nicht :?
elduchte Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 199

Win 2000, Win XP
Delphi 7
BeitragVerfasst: Mo 23.06.03 13:37 
also, ich weiß, wie ich auf die einzelnen Zeilen einer Memo zugreifen kann. Da ich alle Zeilen nach Wörter durchsuchen muss, muss ich doch eine Schleife benutzen, in der ich sage : Beginne bei Zeile 0 und Ende bei Zeile xx des Memos. Wie bekomme ich aber nun heraus, wieviele Zeilen das Memo enthält?

Und wenn ich weiß, wieviele Zeilen das Memo enthält, muss ich doch mit einer weiteren (vielleicht auch mit der oberen) Schleife jede Zeile durchlaufen und so jedes Wort filtern. Aber wie kann ich aus jeder (einer) Zeile alle Wörter auslesen, so dass ich zB jedes Wort einzeln in einem Array ablegen kann ?

Oder denke ich zu kompliziert????

Gruß
Andreas
StefanH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Mo 23.06.03 16:09 
Wieviele Zeilen dein Memo hat?
ausblenden Delphi-Quelltext
1:
Memo1.Lines.Count					

Irgendwie vielleicht auch noch ein -1 glaub ich
Kopier halt deinen Text irgendwo hin und fängst an von Leerzeichen zu Leerzeichen das Wort in ´nen Array zu schreiben oder so

Vielleicht konnte ich helfen :wink:

Stefan

_________________
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
elduchte Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 199

Win 2000, Win XP
Delphi 7
BeitragVerfasst: Mo 23.06.03 17:16 
genauso will ich das auch machen, allerdings weis ich nicht, wie ich diese textzeilen von wort zu wort lesen kann, um jedes wort einzeln zu speichern..... :(
madigeMade
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 23.06.03 17:34 
Also Wörter im Deutschen haben ja eine Gemeinsamkeit. Sie werden durch Leerzeichen getrennt. Also kannst du doch deine Memozeile nach Leerzeichen überprüfen, und die Werte dazwischen sind Wörter. Z.b.
Lies dir die aktuelle Zeile in die Var "Zeile" und dann:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var laenge:integer;
hilf:string;
begin
  hilf:='';
  for laenge:=1 to length(zeile) do
  begin
    if zeile[laenge]<>' ' then hilf := hilf + zeile[laenge];
    if zeile[laenge]=' ' then ... // Jetzt hast du ein Wort auf der Variablen hilf
  end;


Gruß de Made

_________________
Ich kam, sah und schrieb ein Prog.
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Mo 23.06.03 17:48 
Wörter werden nicht nur durhc ' ' getrennt sondern auch durch:
'. '
', '
': '
'; '
'/'
'! '
'? '
usw.

darauf musst du achten, denn bei der ' ' Methode bekomsmt du bei einem 'blabla' und beim anderen vielleciht 'blabla;' und das ist dann ja nicht gleich...

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
madigeMade
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 23.06.03 17:58 
Ok, aber dann kann man ja auch schreiben :
ausblenden Quelltext
1:
if (zeile[laenge] in ['a'..'z','A'..'Z','Ä','ä','Ö','ö','Ü','ü','ß']) then hilf := hilf + zeile[laenge];					


Und bei belieben auch noch andere Zeichen oder man macht es so:
ausblenden Quelltext
1:
if not (zeile[laenge] in ['.' , ',', ':', ';', '/', '!', '?', ' ']) then ...					


Gruß de Made

_________________
Ich kam, sah und schrieb ein Prog.