PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2 Simple Delphifragen



Floydpower
24.02.2004, 06:13
Frage1:
also hab ein Richtext. Wie kann ich die Zeilen des Textes herausfinden?

Frage2:
ich hab n string wie

ich bin hier
wie kann ich herausfinden aus wie vielen wörtern es besteht und wie kann ich nur ein bestimmtes wort aus dem string rausnehmen ?

Chocwise
24.02.2004, 07:30
Original geschrieben von Floydpower
...Frage2:
ich hab n string wie

wie kann ich herausfinden aus wie vielen wörtern es besteht und wie kann ich nur ein bestimmtes wort aus dem string rausnehmen ?
Ich hab ja im Grunde absolut keine Ahnung und sollte sicherlich besser die Klappe halten wenn es um Delphi geht da ich nur PHP kann, aber ich muss, irgendwas zwingt mich dazu. :D

@ Wort aus dem String rausholen & Wörter zählen:
PHP bietet eine Funktion mit der man einen String an gewünschten Zeichen Aufsplitten und die einzelnen Teile in Array's packen kann.
In PHP heißt diese Funktion explode().
Wenn es diese oder eine vergleichbare Funktion auch in Delphi gibt (hab geforscht: Ja, scheint es zu geben, sie heißt auch in Delphi "explode"), könntest du den String mithilfe jener Funktion an den Leerzeichen aufsplitten und hättest die einzelnen Wörter in einem Array.
Bsp.:
Hallo         liebe         leute.
$array[0] $array[1] $array[2]

Wenn du nun noch weißt an welcher Stelle das gesuchte Wort steht, kannst du es mit der Arraybezeichnung direkt ansteuern oder auch im Array nach dem Begriff suchen per array_search() (so heißts zumindest in PHP ;)) welche dann den Arraykey des gesuchten Wortes ausspuckt womit du dann auch weißt an welcher Stelle das Wort im String steht.
Die Anzahl der Worte eines Strings müsste auch recht leicht zu ermitteln sein. Einfach indem man die Werte oder Schlüssel des Array's zählt. In PHP heißt diese Funktion "array_count_values" in Delphi scheint die anders zu heißen, hab jedenfalls kein Vorkommen selbiger Funktion bei Delphi mit Google gesichtet.

Gibts eigentlich irgendwo eine ordentliche Delphi-Befehlsreferenz im Netz?

Master of Disaster
24.02.2004, 17:47
http://www.swissdelphicenter.ch/torry/showcode.php?id=1326
Zum Thema StringTokenizer, explode usw.

Die Zeilen eines Memo, RichEdit Controls bekommst du mit memo1.lines bzw. richedit1.lines.

@Chocwise:
In den gängigen Programmiersprachen wird die Anzahl der Werte im Array als Länge bezeichnet, dementsprechend heißen auch die Funktionen...
Um in einem String zu suchen gibts einen Haufen Möglichkeiten (Boyer-Moore, Grober, Knuth-Morris-Platt z.B.) oder die Funktion pos in Delphi.

Ineluki
24.02.2004, 23:46
also eine explode funktion wie in PHP bietet delphi definitiv nicht .. da bleibt dir wohl nichts uebrig, als dir selber was zu basteln ...

du koenntest z.B. jedes Zeichen des Strings auslesen und wenn es ein trenzeichen ... also leerzeichen, punkt, komma, etc ist, faengst ein neues Wort an, das du in nem extra string speicherst .. z.B. in einer Stringlist. Dann kannst du im Nachhinein die woerter nach deinem gesuchten wort ueberpruefen ..

hier mal ein Beispiel



function SucheWort(Text,Wort:String):Boolean;
var list:TStringList;
temp:String;
i:Integer;
begin
list:=TStringList.Create;
temp:='';
for i:=1 to length(Text) do
if (Text[i]=' ') // hier alle gueltigen Trenzeichen mit Oder Verknuepfen
AND (temp<>'') //Mehrmalige Trennzeichen als ein Trennzeichen sehen
then begin
list.Add(temp); //Vollstaendiges Wort der Liste hinzufuegen
temp:=''; //Temporaerstring zuruecksetzen
end
else temp:=temp+Text[i]; //sonst Zeichen an aktuelles Wort anhaengen
result:=false; //Standardmaessig wort nicht gefunden
for i:=0 to list.count-1 do
result:=result or (list.strings[i]=wort); //ist result einmal wahr, so bleibt es immer wahr
list.free;
end;


Diese einfache Funktion gibt true zurueck, wenn Wort in Text enthalten ist, und false, wenn nicht. Natuerlich koennte man stattdessen auch den Index des Wortes oder die Position des Startzeichens in Text zurueckgeben.

Gruss Ineluki

Chocwise
25.02.2004, 01:34
Ich wollt, jetzt nach Luki's Beispielcode, bekanntgeben das ich Delphi abgeschworen habe. :D Die Syntax ist IMO übelst und gefällt mir absolut nicht. ;)
Mit sofortiger wirkung verschwindet "Delphi 6 - Enterprise Edition" von meinem System und die CD mit dem Backup verbuddel ich im Garten. :D
Ich will hoffen das mir C++ mehr zusagt. ;)

Durandal
25.02.2004, 03:19
C++ wird vermutlich noch abschreckender sein.
Du musst dich einfach mal mit einem Syntax über ein paar Tage beschäftigen und er wird dir schon viel übersichtlicher erscheinen.

Ich kann dir auf jeden Fall gleich sagen, dass du einen C++ Syntax für einen neu einsteiger komplett unverstädnlich sein wird.
Überall arbeitest du mit netten () klammern, knappen Befehlen und Symbol Orientierten Operatoren.

Allerdings wird dir einiges als PHP User bekannt vorkommen. (Vorteil für dich)