letzten drei buchstaben eines wortes vergleichen

xldn
ich will letzten drei buchstaben eines wortes vergleichen, ein wort wird mit einer textdateiliste verglichen, alle die die letzten 3 buchstaben gleich haben, sollen ausgegeben oder gespeichert werden
thx cool
p-Logic
aus der dephi-hilfe:
Zitat:

function Copy(S; Index, Count: Integer): string;
function Copy(S; Index, Count: Integer): array;

Beschreibung

S ist ein Ausdruck des Typs String oder dynamisches Array. Index und Count sind Integer-Ausdrücke. Copy gibt einen Substring oder ein Array zurück, das Count Zeichen oder Elemente ab S[Index] enthält.

Ist Index größer als die Länge von S, gibt Copy einen leeren String oder ein leeres Array zurück.

Gibt Count mehr Zeichen oder Array-Elemente an, als verfügbar sind, werden nur die Zeichen oder Elemente von S[Index] bis zum Ende von S zurückgegeben.


also kannst du mit
code:
1:
copy(str, length(str)-3, 3);

(str ist dein str) die letzten drei Zeichen rausfiltern.

Das dann nur noch in ein if:
code:
1:
2:
3:
4:
IF (copy(str, length(str)-3, 3) = "txt") THEN
...


Wenn (textdateiliste = Liste von Dateien??)
Dann könntest du aber auch mit
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function ExtractFileExt(const FileName: string): string;

Beschreibung

Mit ExtractFileExt können Sie die Namenserweiterung einer Datei ermitteln. So gibt beispielsweise folgende Anweisung die Namenserweiterung der mit der Variablen MyFileName angegebenen Datei zurück:

MyFilesExtension := ExtractFileExt(MyFileName);

Der resultierende String enthält auch den Punkt, der den Dateinamen von der Erweiterung trennt. Besitzt der angegebene Dateiname keine Erweiterung, wird ein leerer String zurückgegeben.

Delphi die ganze Arbeit machen lassen Augenzwinkern
Da geht das auch, wenns mal die letzten vier sind (z.B. .jpeg).
xldn
thx
tschuldigung für den komischen ausdruck, ich war wohl etwas komisch drauf, ich meinte wörter aus einer textdatei (dictionary-stil) Idee
ähm und das ganze soll so ne art reimwort-finder werden *schäm*
p-Logic
also einfach das Wort mit jedem anderem vergleichen.

Sollte nicht all zu schwer sein.

wenn was nicht klappt, einfach posten...

Ist aber ne coole Sache, ich hab meine Karriere als rappa aufgegeben, weil ich ewig gebraucht hab Reimwörter zu finden heulen
xldn
ok, thx, dass mit dem vergleochen funzt schon!! smile
jetzt muss ich nur noch die wörter aus ner txt datei auslesen!
wie mach ich dass am besten?
also die wort liste zb so:

hallo
haus
maus

und er soll nen string mit denen vergelichen und die die gleich sind alle auf einem label ausgebe (?)
thx
p-Logic
Such mal in der Hilfe nach:
TStrings.LoadFromFile
und seh dir die Beispiele zur Arbeit mit TStrings an.

Wenn der User die Wahl hat eine eigene Wörterbuch-datei zu laden macht sich auch ein OpenDialog
auf der Registrierkarte Dialoge.

Einfach mal in der Hilfe gucken, ist wirklich nicht so schwer.
xldn
nein ich hab kein delphi! ich nehm immer n editor und kompilier das dann...

NEIN nur spass smile
aber meine hülfe ist auf english, das ckeck ich zwar, da is es aber nicht so doll mitm proggen...
kannste mir nicht n code beispiel geben?
thx
p-Logic
Gut, dann hier de Hilfe-Text auf deutsch mit Beispiel:
Zitat:

Die Methode LoadFromFile füllt die Liste mit Textzeilen aus einer angegebenen Datei.

procedure LoadFromFile(const FileName: string); virtual;

Beschreibung

Durch den Aufruf der Methode LoadFromFile wird der Inhalt einer Textdatei in die Liste eines TStrings-Objekts geladen. Dabei wird jede Zeile der Textdatei, die mit einem Zeichen für Zeilenvorschub oder Wagenrücklauf endet, als String an die Liste angefügt. Der Name der Datei wird im Parameter FileName übergeben.

Hinweis

LoadFromFile verwendet die Methode Add, um die Liste aus einer Textdatei zu füllen.


Zitat:

Für dieses Beispiel werden zwei RTF-Eingabefelder im Formular benötigt.
Wenn das Formular angezeigt wird, enthält das erste RTF-Feld den Text in seiner Rohform, einschließlich der Formatsteuerzeichen. Das zweite Feld zeigt den Text in der üblichen formatierten Fassung.

procedure TForm1.FormCreate(Sender: TObject);
const
// Passen Sie ggf. folgenden Pfad an.
Path = '..\Demos\RichEdit\OverView.RTF';
begin
RichEdit1.PlainText := True;
RichEdit1.Lines.LoadFromFile(Path);
RichEdit2.PlainText := False;
RichEdit2.Lines.LoadFromFile(Path);
end;


Das mit den Richedit-Feldern brauchst du nicht, du brauchst nur einen TStrings an sich, also:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
...
implementation

var
strings: TStrings;   <- hier wird die Variable deklariert (weißt du zwar, aber ich schreibs trotzdem hin)

...
procedure TForm1.FormCreate(Sender: TObject);
begin
  strings:= TStrings.Create; <- anders als bei normalen Variablen musst du bei TStrings beim Programmstart einen Constructer durchlaufen lassen.
end;
...
procedure bla();
begin
// hier kannst du nun deinen Text laden:
  strings.LoadFromFile('text.txt');
// und auslesen:
 Form1.caption :=   strings.Strings[10];
end;
xldn
big thx, aber wie nehm ich da jetz die strings einzel raus und sprech sie dann nach dem vergleichen wieder an? (also die zeilen einzel)?
thx
p-Logic
so:

strings.Strings[i];

die einzelnen Zeilen werden in den Array geschrieben:
strings.Strings[0]; 1. Zeile
strings.Strings[1]; 2. Zeile
strings.Strings[2]; 3. Zeile
...
perle
und dann einfach alle durchlaufen :

code:
1:
2:
3:
4:
5:
6:
for I := 0 to strings.count - 1 do
begin
  if ....
end;
xldn
irgendwas stimmt da nicht! bei tstrings krieg ich immer nur ne meldung:
abstract error Kotzen
daHooligan
ich kenn mich bei delphi net aus, aber gibts da nicht auch nen befehl wie "substr(0,3,$string) ; ) ?? ich kenns jetzt nur von php, wollte es aber gesagt haben, vllt. hilfts ja
p-Logic
@daHool
Stimmt, heißt zwar copy, wird aber ähnlich wie substr in PHP verwendet:
function Copy(S; Index, Count: Integer): string;
copy("ABCD",0,2) ist dann "AB"
copy("ABCD",1,3) ist dann "BCD"
usw.

@xldn
Bist du sicher, dass du die TStrings mit dem Constructor initialisiert hast?
also in OnCreate:
strings = TStrings.Create;
xldn
ja sicha, ich hab ja deinen code kopiert und angepasst! Mauer
p-Logic
poste doch mal was du jetzt an Code hast (also, alles was für den Fehler interessant sein kann)
perle
btw sollte man besser TStringList statt Tstrings nehmen, dafür ist es schließlich da
p-Logic
Ja, perle hat mich erwischt...

Nimm lieber TStringList. Ist eigentlich kein Unterschied in der Handhabung, da TStringList eine abgeleitete Klasse von TStrings ist.
TStringList enthält aber noch zusätzliche Funktionen zum sortieren, doppelte Einträge raus filtern und lauter so "überflüssigen" Luxuskram großes Grinsen .