Autor Beitrag
nl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mi 27.10.10 12:34 
Hallo!
ich brauche Hilfe beim Erstellen eines Karteikartenprogramms in Delphi. Ich bekomme auf dieses eine Note die wie eine Kursarbeit zählt und da ich sehr schlecht in Informatik bin benötige ich unbedingt Hilfe da ich nicht nochmal einen Unterkurs bekommen möchte.
Der Lehrer hat uns generell nicht vieles gesagt woran wir uns halten sollen, also habe ich relativ viel Spielraum.
Ich habe nicht viele Kenntnisse von daher wäre es super wenn mir jemand unkompliziert helfen könnte.
Als erstes bräuchte ich eine "Rohform" wie ich allgemein eine Karteikarte erstmal erstellen kann, da ich einen Enstehungsprozess nebenbei formulieren muss.
Eine Karteikarte soll zb. mehrere englische Wörter enthalten die random aufgerufen werden sollen. Also zb. soll ein englisches Wort angezeigt werden sodass man in zb einem Editfeld die Übersetzung eingibt und dies soll dann überprüft werden ob es richtig oder falsch ist, somit soll also eine Ausgabe folgen.
Das Ganze soll objektorientiert sein, also auch in "public" und "private" gegliedert werden.
Ich habe ebenfalls keine Ahnung wie man eine Datenbank in Delphi erstellt, wo alle diese Karteikarten, sowie Antworten und Fragen enthalten sein sollen.

Ich hoffe mir kann jemand helfen, da ich wirklich sehr wenig Ahnung habe :/

Danke im Voraus.

MFG nl
MaxWurzel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 77
Erhaltene Danke: 10



BeitragVerfasst: Mi 27.10.10 13:22 
Vielleicht hilft dir das hier weiter:
www.delphi-forum.de/...light=vokabeltrainer
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 27.10.10 13:55 
Das einfachste wäre wahrscheinlich eine typisierte Datei. Jeder Record enthält dabei Frage und Antwort.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 27.10.10 14:00 
Und was dann die umsetzung in Delphi angeht:

Christians Crashkurs
Delphi-Wikibook
Typisierte Dateien

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Mi 27.10.10 15:14 
Hallo!

Hast du denn schon ein Konzept, wie du das Ganze aufbauen möchtest? Ich glaube, wenn du dir das erst einmal alles klarmachst, siehst du auch, was du wo und an welcher Stelle benötigst. Letztlich sollte dann das Programm rauskommen... ;-)

Manchmal hilft es, eine Art Drehbuch zu schreiben und zu zeichnen. Wenn du dann die einzelnen Skizzen noch in knappen Worten beschreibst, hast du zumindest schon einmal den groben Aufbau des Programms. Wenn du dann genaue Fragen hast, wie du etwas implementieren musst, wird dir hier sicherlich geholfen.

Grüße
Michael
Critter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Mi 27.10.10 16:43 
Hallo,

ich würde auch wie user profile iconfreedy daran gehen. Gucke dir erst einmal an, was genau von euch verlangt wird. Du schreibst, das ihr "Objektorientiert" arbeiten sollt wie Objektorientiert "Objektorientiert" ist, hängt leider immer sehr stark vom Lehrer ab. Ich nehme einmal an, er erwartet, dass es irgendwo in deinem Programm eine Klasse tKarteiKarte geben muss? Dann würde ich damit anfangen, mir zu überlegen, wie diese aufgebaut sein muss und sie eventuell Programmieren (zu Testzwecken einfach mit einer beliebigen Vokabel füllen). Wenn diese Grundfunktion gegeben ist, würde ich mir erst Gedanken machen, wie ich das ganze Speichere und wie ich aus den vielen gespeicherten Karteikarten eine beliebige auswähle (vielleicht fällt dabei ja eine Klasse tKarteiKasten ab ;)).

Aber wie gesagt du musst die Anforderungen an deine Anwendungen eingrenzen und das "Objektorientiert" kann Leider alles heißen (mir sind da Lehrer untergekommen für die war das Kriterium ausreichend erfüllt, wenn es irgendwo ein tForm und ein tButton gab).

critter

_________________
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mi 27.10.10 16:46 
Also eine Karteikarte besteht nach deiner Beschreibung aus folgendem:
- EIN englisches Wort (auch wenn du erst meinst es müssen mehrere englische Wörter drauf, das find ich unlogisch)

- EIN oder mehrere Übersetzungen

Dann machst du ein array von diesen Karteikarten (=Karteikasten). Dort kannst du dann random eine auswählen.

Speichern kann man das ganze dann relativ leicht. Am besten du legst die Werte erstmal im Code an und lagerst dann, wenn das Abfragen funktioniert, die Werte in Dateien aus. (Dann hast du nämlich schonmal was, wo du irgendeine "bessere" Note drauf erhalten kannst, auch wenn du keine Zeit mehr hattest, die Werte auszulagern). Auch das Einfügen von Karteikarten usw. wäre für mich Sekundär.

Eine Klasse für eine Karteikarte schreiben ist eigentlich einfach. Das beste ist, vor allem wenn du dir nicht so sicher bist, erstmal schriftlich als Strichliste zu notieren, was diese Karteikarte können müsste

UNGEEIGNETES Beispiel:
Eigenschaften
-Farbe
-Papiertyp
-Schriftart
Funktionen
-Zerknüllen
-AnDieWandHängen

Wenn du zeigst, dass du nicht nur fertigen SourceCode von uns willst, dann kriegst du sicher auch genauere Hilfe ;) Jeder hat Angst zu viel zu verraten, damit du nicht durch pures Kopieren eine anständige Note erhälst.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Critter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Mi 27.10.10 17:23 
Hi,

@user profile iconXion: Das ist dann der Apple Ansatz. Nach dem Motto: Ich mache mir die Welt, wie sie mir gefällt. Wenn es bestandteil der Aufgabe ist, dass mehrere Englische Worte rein müssen, dann wird user profile iconnl sich auch dran halten müssen, sonst drückt das auf die Note. Unlogisch finde ich es übrigens gar nicht, im gründe könnte man sogar auf beiden Seiten mehrere Vokabeln zulassen, denn es kann ja durchaus sein, das eine Grupe Deutscher Synonyme einer Gruppe englischer Synonymen gegenübersteht. Aber das ist hier ja nicht die Aufgabe und Aufgaben umdefinieren ist meist Recht gefährlich für die Note.

So wie ich die Aufgabe bisher verstanden habe sollte es so laufen: Es Existieren mehrere Vokabelkarten, das Programm Pickt sich eine Karte hier heraus, diese enthällt immer eine Deutsche Vokabel und eine oder beliebig viele Englische Entsprechungen, nun wählt das Programm eines der Synonyme und zeigt es an, der Benutzer muss nun die (einzige) deutsche Vokabel eingeben. Das ist weder unlösbar noch unsinnig, somit rate ich dringend davon ab mal eben zu sagen, dass die Karte nur eine Englische Vokabel enthält. Besonders da der der Lehrer sich sicherlich etwas dabei gedacht hat (und in diesem Fall meine ich sogar etwas nachvollziehbares) ;).

critter

_________________
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
nl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mi 27.10.10 19:51 
Erstmal vielen Dank für die schnellen und vielen Antworten.

Ich möchte ja selbst kein copy & paste ;) würde es gerne verstehen.

Also ich habe nochmal genau geschaut, der Lehrer hat mir heute auch nochmal ein paar Dinge genannt:

TKarte:
Frage: string
Antwort: string
(Er hat noch etwas von "getRueckseite","getVorderseite" geredet, leider versteh ich das nicht so wirklich :/)


TStapel:
array of Karte(Anzahl)

und dann soll noch ein "Verwalter" vorhanden sein in dem quasi alles überprüft wird.

Also eine Karte soll ein Wort zum übersetzen enthalten, sowie ein Eingabefeld und ein Label zum ausgeben.

Wenn mir jemand "getRueckseite/Vorderseite" erklären würde wär es gut, dann könnte ich mal einen Ansatz probieren.


Danke.
MFG nl
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 27.10.10 19:56 
Na ja, auf der richtigen Karteikarte aus Pappe steht auf der Vorderseite die Vokabel und auf der Rückseite die Übersetzung. Die gibt es so natürlich nicht im Code. Das war nur sinnbildlich gemeint vom Lehrer, um einen Bezug zur Wirklichkeit herzustellen.
nl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 28.10.10 13:42 
Ich könnte mir wirklich den Kopf zerbrechen und komm keinen Meter voran. Habe echt keinen Plan wie ich überhaupt anfangen muss...

Ich weiß nicht wie ich das mit Frage, Antwort mache, bz. wie ich denen eben eine "Frage" zuteile und das anzeigen lasse :/

Verzweifel hier bald :o

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Muss denn Frage und Antwort eine Function od. eine Procedure sein?
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Do 28.10.10 14:01 
Hallo nl!

Hör mal auf, zu implementieren, also Code zu schreiben. Wenn dein Konzept nämlich steht, ergibt sich das quasi von alleine. Das Programmieren ist ja nur eine Sprache. Wenn du in einer Stadt im Ausland irgendwohin möchtest, fragst du dich doch auch als erstes, was du jemanden überhaupt fragen willst, BEVOR du dir den Satz im Kopf übersetzt. Mir geht es jedenfalls so.

Präsentiere uns doch mal dein Konzept! Das ist, wenn ich das oben richtig gelesen habe, schließlich auch Bestandteil deiner Note.

Grüße
nl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 28.10.10 14:53 
Also wie ich schon gesagt hatte soll TKarte EINE Vokabel zum Übersetzen besitzen und MEHRERE Übersetzungen ( da es ja meistens mehrere Übersetzungen für eine Vokabel gibt).

Also:
1. Label: Vokabel
2. EditFeld zur Eingabe.
3. Label: Richtig!/Falsch!
4. Label(falls Falsch!): Richtige Antwort:"..."
5. Button: Prüfen
6. Button: Nächste Vokabel

TKartenstapel soll alle Karten in sich haben(Array) und eine Random beim Start rauspicken und die Vokabel direkt anzeigen(dies geht mit Konstruktoren oder?).

Im "Verwalter" soll nun alles überprüft werden(sobald der "Button: Prüfen" geklickt wird), also ob die eingebene Übersetzung mit der Eingetragenen übereinstimmt und anschließend die Ausgabe in den vorgegebenen Labels stattfinden. Nach dem klicken des "Button: Nächste Vokabel" soll via Destruktor diese Vokabel im Speicher wieder überschrieben werden und logischerweiße die nächste Vokabel(Random) angezeigt werden, dann beginnt das ganze von Vorne.
(Verhindert der Destruktor dass die gleichen "Karten" hintereinander kommen? Wenn nicht die kann man das realisieren?)


Hab jetzt nur mal eine Grundform erstellt, den äußerlichen Feinschliff kann man ja immernoch gestalten :)

Habe mal ein Screen angehängt.

Hoffe dies hilft jetzt evtl.
Einloggen, um Attachments anzusehen!
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Do 28.10.10 14:56 
Prozedur: Block von Befehlen, es wird zwar 'was gemacht' aber kein Ergebnis zurückgeliefert.
Funktion: Siehe Prozedur, jedoch wird ein Ergebnis zurückgeliefert.

Z.B. könnte man eine Prozedur verwenden, um einen String in einem Label anzeigen zu lassen. Dazu würde man der Prozedur als Paramter den anzuzeigenden String mit übergeben. Die Prozedur "berechnet" aber kein Ergebnis und gibt daher auch nix zurück.

Anders wäre es bei einer Funktion wie z.B. "Summe(Zahl1: Integer, Zahl2: Integer): Integer; Die Funktion bekommt zwei Ganzzahlen als Parameter und gibt das Ergebnis "Summe" als Ganzzahl wieder zurück.

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Do 28.10.10 14:59 
Das schaut doch schonmal gut aus ;)

Nun hast du oben ja schonmal angefangen aufzuschreiben, wie TKarte und TStapel ausschaun sollen. Fang doch bei TKarte an und schreib deine abstrakte sprachliche Beschreibung mal in Delphi ;)

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Do 28.10.10 15:20 
Dein Projekt schreit ja förmlich nach MVC. Sagt dir das etwas? Wahrscheinlich nicht. Ich habe so etwas damals in der Schule jedenfalls nicht gelernt. Aber das ist ja erstmal egal. ;-)

MVC steht für Modell, View und Control. Das heißt letztlich nichts anderes, als dass die Daten - in deinem Fall die Vokabelkärtchen - von der Anzeige getrennt vorliegen sollen. Das umgehst du letztlich, indem du alle Kärtchen, jedes in seine eigene, Struktur steckt. Okay, wir brauchen also eine Struktur. In Delphi nennt man soetwas Record. An dieser Stelle solltest DU DIR überlegen und uns nachher präsentieren, wie du dir die Struktur vorstellst. Platzwart hat das ja schon angeführt. Da es nicht nur ein Kärtchen gibt, müssen diese Kärtchen irgendwo gesammelt und zu einer Menge vereinigt werden. Du brauchst also eine Liste. Das alles wäre dann irgendwo dein Modell.

Jetzt schauen wir uns einmal die View an. Die Aufgabe der View ist nur, die Daten aus dem Modell darzustellen. Sie führt keine Überprüfung durch und trägt auch keine neuen Daten ein. Sie stellt nur dar! Damit sind und bleiben die Daten immer von der Darstellung unabhängig. Für viele Projekte ist das sehr wichtig.

Das Herzstück für dein Vokabelprogramm ist dann der Controller. Er verbindet Modell und View miteinander. Wenn du in dem Formular ein Eingabefeld hast, wird der eingetragene Text an den Controller übergeben. Dieser vergleicht die Eingabe mit der erwarteten Eingabe; denn er kennt auch die Daten und weiß, welche Karte gerade ausgewählt wurde. Der Controller gibt dir auch die Antwort zurück, ob die Eingabe richtig oder falsch war. Die View dann kann darauf reagieren und eine entsprechende Ausgabe machen, so wie das schon von dir vorgeschlagen wurde.


Vielleicht wird dir jetzt auch klar, dass das, was du oben beschrieben hast, dann keine optimale Lösung ist. Es geht, würde auch irgendwie funktionieren. Alternativ schlage ich dir den Entwurf einer neuen Klasse vor, die eben alles erledigt, was der Controller zu tun hat. Du kannst sie einfach in deine Applikation einbinden. Dein Modell, also die Kärtchen, könntest du auch in eine separate Klasse auslagern. Damit erfüllst du dann die Aufgabenstellung, dass es objektorientiert sein soll.

Das Ganze solltest du dir aufmalen. Und damit meine ich nicht, wie und wo irgendwelche Komponenten auf dem Formular platziert werden. Male dir auf, welche Daten wo und in welcher Form benötigt werden. Wenn du dabei noch Hilfe brauchst, frag einfach.
nl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 28.10.10 15:58 
Ja die 3 sollen aufjedenfall jeweils eine eigene Klasse sein.
Mein Problem ist einfach dass ich nicht weiß welche Daten ich in welcher Form brauche, mir fehlen einfach total die Grundlagen da ich letztes Jahr einen ziemlich unfähigen Lehrer hatte.

Ich habe noch nie etwas von "Record" gehört und von Listen weiß ich leider auch sehr wenig.

Eigtl. versteh ich ja was ihr mir vorschlagt, aber iwie krieg ich es nicht auf die Reihe, es auf "Papier" zu bringen, auch gerade weil mir diese Grundlagen fehlen.

Hoffe ihr hattet schon öfter mit Personen wie mir zu tun :D
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Do 28.10.10 16:29 
Dann solltest du zumindest einen der Crashkurse durcharbeiten (s. Beitrag von user profile iconelundril)

user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:


Christians Crashkurs
Delphi-Wikibook
Typisierte Dateien

Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 28.10.10 18:10 
Also, ich fass das von user profile iconfreedy nochmal zusammen *schlagt mich wenns falsch ist*


View: Die Schnittstelle mit dem User
Drückst du auf einen Knopf, wird der "Klasse" View mitgeteilt, dass der Knopf gedrückt wurde. (wäre diese Klasse nicht die TForm?). Die View leitet dann die Anfrage, was auf diesen Knopfdruck passiert, an den Controller.

Controller: Verbindung von View zu Modell
Kriegt der Controller eine Anfrage, so sucht er die entsprechenden Daten raus. (wie weit ist denn hier die Abstraktion? Kann er gleich in die Daten zugreifen, oder macht das das Modell?)

Modell: Der Daten-Speicher
(Ist ein record eine Klasse? Eigentlich nicht. Von daher bräuchten wir garkein record)


Also meiner Auslegung nach wäre die View die Form, und das Modell wäre ein array of Karteikarte. Der Controller ist das Paket an Funktionen, in denen das eigentliche Programm steckt (Vergleiche machen, Ergebnis ausgeben usw.)

Ist das so richtig? :lol:
Wie man sieht ist mir dieses Prinzip noch nicht beigebracht worden (3.Semester Informatik). Ich glaube der Lehrer hat das so nicht gemeint ;) Scheint mir sehr hoch gegriffen.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Do 28.10.10 20:45 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
type

TPerson: record
           Vorname: String[20];
           Nachname: String[50];
           Alter: Integer;
           Verheiratet: Boolean;
         end;


Verinnerliche dir mal dieses Beispiel eines Records. Anschließend überlegst du, wie dein Record ausschaun sollte und poste es hier ;)

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)