Entwickler-Ecke
Sonstiges (Delphi) - Wortsortierer
ForgottenDeath - So 08.02.09 20:18
Titel: Wortsortierer
1. Ziel Wortsortierer
Auf einer Webseite (PHP) bzw. dem Desktop (Delphi) soll ein beliebiger Text eingegeben werden. Das Programm soll alle Worte dieses Textes einlesen und alle Buchstaben in Kleinbuchstaben verwandeln. Danach sollen die Worte sortiert und wieder ausgegeben werden. Interpunktionen und Zahlen werden dabei ignoriert. Die Ausgabe soll dabei nach den beiden Anfangsbuchstaben der Worte gruppiert werden. Innerhalb dieser Gruppen erfolgt die Ausgabe in umgekehrter alphanumerischer Reihenfolge. Doppelte Worte werden nur einmal mit der Häufigkeit ihres Auftretens ausgegeben.
2. Verlauf
Der Text soll in ein mehrzeiliges Eingabefeld eingegeben werden. Nach Bestätigung durch den Benutzer wird der Text vom Programm verarbeitet. Das Ergebnis muß in geeigneter Weise ausgegeben werden.
3. Abgabe
Das Programm soll in Delphi geschrieben werden.
4. Abzugeben sind
Unter Delphi: fertig kompiliertes Programm
Hat jmd ne Ahnung? das geht leider über meinen geringen Erfahrungsschatz in Delphi....
Moderiert von
Narses: Beitragsformatierung überarbeitet.
jaenicke - So 08.02.09 20:23
Hallo und :welcome: !
Hast du denn einmal angefangen? Wo kommst du nicht weiter?
Wie sollen wir dir denn helfen, wenn du nichts zeigst was du bisher hast? Was erwartest du also als Antwort?
Stichworte wären z.B. LowerCase und zur Speicherung der Wörter z.B. TStringList.
ForgottenDeath - So 08.02.09 20:31
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| unit gate;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) private public end;
var Form1: TForm1; var
StringList: TStringList;
StringList := TStringList.Create;
StringList.LoadFromFile('http://www.haus-perthen.de/gateprotect.txt');
StringList.Sort; ShowMessage(StringList.Text); StringList.Free; end;
implementation
{$R *.DFM}
end. |
soweit bin ich aber irg weiß ich nicht weiter
habe delphi vor ca 2-3 jahren das letzte mal genutzt und habe sehr wenig ahnung
Moderiert von
Narses: Delphi-Tags hinzugefügt
Webo - So 08.02.09 20:52
Wichtig ist erstmal, dass du dir im Klaren bist, wie du dein Vorhaben logisch, mal ganz ab von der Programmiererei, lösen würdest (z.B. Ich durchsuche den Text nach "...") .
Überleg dir:
- Wie könnte man möglichst einfach nur kleine Buchstaben "erlauben" ? Wie
jaenicke schon ansprach: Stichpunkt LowerCase
- Nach was sortiere ich und wie sortiere ich ( besonders erstes habe ich noch nicht kapiert, was du tun willst) ?
- Wie lasse ich Zahlen weg ?
... etc.
Wenn du dann ein Konzept hast, dann fragst du dich, wie man das in Delphi realisieren könnte, wobei du da natürlich Hilfe bekommst, wenn du nach außen hin zeigst, dass du dir Gedanken gemacht hast und nicht einfach andere für dich arbeiten lässt.
Grüße
Webo
jaenicke - So 08.02.09 20:52
Du sollst den Text doch gar nicht aus einer Datei laden, den hast du ja in einem Eingabefeld auf dem Formular.
Vorgehensweise könnte bspw. ungefähr so sein:
- Text aus dem Einfabefeld in einen String legen und dabei mit LowerCase in Kleinbuchstaben umwandeln.
- Jeweils nach dem nächsten Worttrennzeichen (kein Buchstabe / Zahl / ...) suchen
- Die Buchstaben bis da hin als Wort nehmen und in einer TStringList suchen
- Wenn das Wort schon drin ist, die Anzahl des Wortes erhöhen, sonst das Wort einfügen
ForgottenDeath - So 08.02.09 21:26
mh... wie könnte sowas ca aussehen?:S bin echt überfordert
jaenicke - So 08.02.09 21:29
Fang doch einfach mal an. Erstell ein neues Projekt, lege ein TMemo und einen TButton drauf, dann klick doppelt auf den Button und deklariere in der ButtonClick Prozedur eine String-Variable. Dann legst du da den Inhalt deines Memos rein, wandelst den Text dabei mit LowerCase in Kleinbuchstaben um, ...
Danach brauchst du Schleifen, kennst du for- und while-Schleifen?
ForgottenDeath - So 08.02.09 21:32
mh.. for und while... ist sehr lange her dass ich davon gehört habe... while kann ich mir vorstellen dass etwas im selben augenblick passieren soll oder so ähnlich
Webo - So 08.02.09 21:40
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| for i := 0 to Anzahlwasauchimmer do begin
...
end;
while i < Anzahlwasauchimmer do begin
...
end; |
Das erste nutzt man immer, wenn etwas raufgezählt werden soll, z.B. den Wort oder Zeilenindex. Das zweite, wie du schon sagtest, solange diese Bedingung erfüllt ist.
Wenn du nicht mehr die Grundlagen drin hast, schau dir doch einfach nochmal nen Crashkurs an.
ForgottenDeath - So 08.02.09 22:07
danke! ich werds mal probiern wie weit ich komme
jaenicke - So 08.02.09 22:27
Ja, wenn du das mit Schleifen schon nicht mehr weißt, dann musst du dir das erstmal anschauen.
Als Crashkurs wie von
Webo angesprochen empfehle ich z.B. den:
http://crashkurs.christian-stelzmann.de
ForgottenDeath - Mo 09.02.09 16:44
mh... sorry aber wie legt man einen Text aus dem Eingabefeld in einen string und gleichzeitig (mit whileschleife?) in einen lowercase?
jaenicke - Mo 09.02.09 17:20
Du nimmst den Text aus dem Eingabefeld, übergibst den an LowerCase und das gibt dir den in Kleinbuchstaben zurück. Das kommt dann in deine Stringvariable.
Delphi-Quelltext
1:
| DeinString := LowerCase(MemoX.Text); |
ForgottenDeath - Mo 09.02.09 17:31
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private
public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin StringList.LoadFromFile('http://www.haus-perthen.de/gateprotect.txt') StringList.Sort; ShowMessage(StringList.Text); StringList.Free; Stringlist := LowerCase(Memo1.Text); end;
end. |
soweit hab ichs jetzt
Moderiert von
Narses: Quote- durch Delphi-Tags ersetzt
ForgottenDeath - Mo 09.02.09 21:38
weiß ehrlich gerade nicht weiter und verzweifel gerade ^^ eig ist delphi ned mein programm und das muss bis mogen fertig sein... zum glück bis morgen abend
er erkennt den befehl stringlist irg leider nicht
kann jmd mir helfen?
LexXis - Mo 09.02.09 23:19
Du gibtst deine Stringlist ja auch per
Stringlist.Free; frei. Außer dem willst du ja nicht auf die Stringlist zugreifen, sondern auf deren Text
:arrow:
Stringlist.Text
Quelltext
1:
| := LowerCase(Memo1.Text) |
jaenicke - Mo 09.02.09 23:22
Es fehlt vor allem die Deklaration der Variable StringList als Typ TStringList und die Erzeugung. Die Variable war oben aber schon mal da.
Ohne die Grundlagen hat das aber keinen Sinn, was soll ich da noch zu sagen. Crashkurs, anderweitige Suche im Internet und vor allem ausprobieren. Alles vorgekaut zu bekommen funktioniert beim Programmieren nicht. :nixweiss:
ForgottenDeath - Mo 09.02.09 23:27
mh.. er erkennt den befehl stringlist.loadfromfile leider nicht:S habe den allerdings aus dem Web
außerdem meint er dass ich überall Semikolons setzen soll
kann es sein dass ich welche vergessen habe?
ForgottenDeath - Mo 09.02.09 23:28
jaenicke hat folgendes geschrieben : |
Es fehlt vor allem die Deklaration der Variable StringList als Typ TStringList und die Erzeugung. Die Variable war oben aber schon mal da.
Ohne die Grundlagen hat das aber keinen Sinn, was soll ich da noch zu sagen. Crashkurs, anderweitige Suche im Internet und vor allem ausprobieren. Alles vorgekaut zu bekommen funktioniert beim Programmieren nicht. :nixweiss: |
ich versuch mich da gerade durchzubeißen, weil ich einen ausbildungsplatz haben will und danach werd ich wahrscheinlich nie wieder auf delphi treffen
von daher setz ich mich da ran
jaenicke - Mo 09.02.09 23:32
ForgottenDeath hat folgendes geschrieben : |
| mh.. er erkennt den befehl stringlist.loadfromfile leider nicht:S habe den allerdings aus dem Web |
Aber StringList ist jetzt deklariert? Weil wenn das nicht als TStringList deklariert ist, dann kann er den Befehl auch nicht kennen. Du musst immer den ersten Fehler zuerst beheben, das war, dass er StringList nicht kennt.
ForgottenDeath hat folgendes geschrieben : |
außerdem meint er dass ich überall Semikolons setzen soll
kann es sein dass ich welche vergessen habe? |
Am Ende von LoadFromFile, ja.
Boldar - Mo 09.02.09 23:34
da gabs glaube ich auch mal
Delphi-Quelltext
1:
| stringlist.sorted := true |
damit ist auch das sortieren einfach, aber dein Lehrer erwartet wahrscheinlich was anderes...
jaenicke - Mo 09.02.09 23:36
Erstmal muss der Text in Worte getrennt und diese gezählt werden, das Sortieren kann man dann immer noch machen. Funktionieren sollte es aber so.
ForgottenDeath - Mo 09.02.09 23:36
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1; StringList: TStringList;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin StringList.LoadFromFile ('http://www.haus-perthen.de/gateprotect.txt') ; StringList.Sort; ShowMessage(StringList.Text); StringList.Free; Stringlist.Text := LowerCase(Memo1.Text); end;
end. |
soweit habe ich es nun
und habe es wenigstens schonmal soweit geschafft dass es startet ( JUHU xD) aber er zeigt mir dann folgendes an:
"Im Projekt Projekt 1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: "Zugriffsverletzung bei Adresse 00444D4C im Modul "Projekt 1 exe " Lesen von Adresse 00000000. Prozess wurde angehalten Mit Einzelne Anweisung oder Start fortsetzen."
Fehlt da irgendwas?
ForgottenDeath - Mo 09.02.09 23:42
wlechen befehl muss ich denn nutzen damit er ausm internet was läd?
war gerade auf der suche nach nem ausgabefenster, was ich ja nicht habe, was kann man dazu verwenden? richedit?
jaenicke - Di 10.02.09 01:21
ForgottenDeath hat folgendes geschrieben : |
| wlechen befehl muss ich denn nutzen damit er ausm internet was läd? |
Das hat doch überhaupt nichts mit der Aufgabenstellung zu tun?!? :gruebel:
(Stichwort TIdHttp + Get wäre eine Möglichkeit.)
ForgottenDeath hat folgendes geschrieben : |
| war gerade auf der suche nach nem ausgabefenster, was ich ja nicht habe, was kann man dazu verwenden? richedit? |
TMemo reicht auch, der Unterschied ist, dass man in TRichEdit den Text auch zeichengenau formatieren kann, etc.
Webo - Di 10.02.09 14:16
Du musst die Datei erst runterladen lassen und dann öffnen, was, wie angesprochen, aber nix mehr mit deiner Frage zu tun hat. Nutze dazu mal die Suche hier im Forum, sie wird dir Aufschluss geben.
Und warum willst du überhaupt ne txt-Datei runterladen - Du sprachst davon, dass der Text eingegeben wird, also in Delphi in ein Feld eingetippt werden soll ?!
Wenn du aber schon nicht weist, wie Schleifen funktionieren und dann direkt mit Komponenten, die was runterladen sollen, arbeitest, solltest du dir über dein Konzept in Zusammenhang mit deinen Kenntnissen mal Gedanken machen und einen Crashkurs & Tutorials "besuchen".
PS: Programmiersprachen ähneln sich (nicht nur leicht), also gilt dein Argument, Delphi brauch ich nicht mehr lang, nicht wirklich ;-)
ffgorcky - So 17.05.09 10:10
Also hast Du jetzt die StringList deklariert?
Entweder unter der
Delphi-Quelltext
1:
| Prozedur TForm1.Button1Click(Sender: TObject); |
zwischen dem Namen und
begin mittels
var davor
oder unter
...je nachdem, ob Du die noch in einer anderen Prozedur brauchst?
Wenn Du sie nur in der einen Prozedur zur derzeitigen Verarbeitung brauchst, dann ist es besser, sie auch dort zu deklarieren.
oldmax - Di 19.05.09 06:33
Hi
Sorry, wenn ich eure Geduld bewundere. Da hat einer vor Jahren mal was vo Delphi gehört und muß nun eine Hausaufgabe machen......
Ich glaub, da verarscht euch einer gewaltig.
Gruß oldmax
jaenicke - Di 19.05.09 13:02
ffgorcky hat folgendes geschrieben : |
| Also hast Du jetzt die StringList deklariert? |
Deklariert ist sie ja auch im letzten Quelltext, die Erzeugung fehlt, wie ich ja auch sagte.
ForgottenDeath hat folgendes geschrieben : |
Delphi-Quelltext 1: 2:
| var Form1: TForm1; StringList: TStringList; | |
Und da keine weitere Antwort kam, nehme ich an, dass das Problem mit dem Hinweis auf die Erzeugung auch gelöst war. ;-)
ffgorcky - So 24.05.09 09:22
Könntest Du denn noch mal Deine Probleme, die immer noch aktuell sind, zusammengefasst aufschreiben?
So langsam blicke ich da leider nicht mehr durch, welche jetzt erledigt sind und welche noch offen...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!