Autor |
Beitrag |
Sherly
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 23.05.07 12:18
Hallo zusammen
Ich habe ein dickes Problem und zwar bin ich ein Anfänger in Delhpi und soll schnellstmöglich einen Vokabeltrainer für Delphi programmieren, der sowohl speichern und laden kann (aus einer Memo Datei) als auch Vokabel hinzufügen und dann abfragen kann. Das ganze soll mit StringListen von statten gehen.
Könnt ihr mir da helfen? Kann ich das Programm vll hier rein stellen, ihr schaut euch das an und helft mir?
Wäre echt super.
Hoffe auf viele Antworten
LG
Da Sherly
Zuletzt bearbeitet von Sherly am Mi 23.05.07 13:01, insgesamt 1-mal bearbeitet
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 23.05.07 12:49
Moin und  im Forum!
Ändere doch bitte den Titel des Threads (z.B. auf "Hilfe bei einem Vokabeltrainer"), weil - Hilfe braucht eigentlich jeder...  Danke.
Sicher kannst du auch das komplette Projekt hier reinstellen, dann aber bitte als ZIP ohne die EXE als Anhang. Noch sehr viel besser ist es allerdings, wenn du die relevanten Codeteile direkt postest und dazu sagst, wo das Problem ist oder was nicht klappt.
Nur das Programm kommentarlos hier reinstellen und uns die Fehler suchen lassen, wird wohl keine soo gute Idee sein...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
arj
      
Beiträge: 378
Win XP/Vista, Debian, (K)Ubuntu
Delphi 5 Prof, Delphi 7 Prof, C# (#Develop, VS 2005), Java (Eclipse), C++, QT, PHP, Python
|
Verfasst: Mi 23.05.07 12:50
Stell mal eine konkrete Frage. Zu was brauchst du genau Hilfe? Zum Laden oder Speichern oder Anzeigen?
|
|
Sherly 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 23.05.07 13:00
Danke erstemal für die Rückantworten
Noch bin ich in der Schule. Das Programm würde ich dann heute Nachmittag hinzufügen.
Mit dem laden und mit dem speichern aus einer Listbox in eine Text Datei ist voll kein Problem.
Das passiert bei mir mit dem Befehl memo1.lines.savetofile('Speicher.txt') bzw. memo1.Lines.LoadFromFile('Speicher.txt');
mein problem zur zeit ist einfach, dass ich überhaupt keine Ahnung habe, wie ich es hinkriegen soll, dass man gezielte Abfragen stellen kann bzw. die jeweiligen Wörter so speichern, dass ich sie wieder verwenden kann.
Den Namen des Threads änder ich jetzt gleich
LG
|
|
Sherly 
Hält's aus hier
Beiträge: 10
|
Verfasst: Do 24.05.07 11:08
Hallo Hier ist das bisherige Programm. Wie gesagt ich weiß halt nit, wie das mit dem direkten ansprechen einiger Vokabeln in einer String Liste funktioniert.
Einloggen, um Attachments anzusehen!
|
|
Sherly 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 30.05.07 13:51
Hallo zusammen
Also ich bin weiter gekommen
Unserer Lehrerin fordert von uns, das erstellte Lexikon nach dem Alphabet zu ordnen. Hilfe!! Wie soll das funzen
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Mi 30.05.07 14:56
Sherly hat folgendes geschrieben: | Unserer Lehrerin fordert von uns, das erstellte Lexikon nach dem Alphabet zu ordnen. Hilfe!! Wie soll das funzen |
Stichwort Sortierung
Es gibt mehrere Sortier-Algorithmen, u.a. quicksort, selectionsort und bubblesort.
Am einfachsten ist bubblesort.
Dabei wird eine Liste solange durchgegangen, bis alle Elemente sortiert sind. Pro Durchgang wird jedes Element mit dem nachfolgendem Element verglichen. Ist der Nachfolger kleiner, werden die Elemente in der Liste getauscht.
Der Algorithmus ist zwar nicht sehr performant, aber bei einer geringen Datenmenge ist das nicht wirklich auffällig.
|
|
Sherly 
Hält's aus hier
Beiträge: 10
|
Verfasst: Do 31.05.07 21:04
Danke dir... Echt super. Es funzt.
Mal schaun, was meine Lehrerin morgen sagt ^^
|
|
Sherly 
Hält's aus hier
Beiträge: 10
|
Verfasst: Fr 01.06.07 08:41
Hallo nochmal.
Was ist denn, wenn ich 2 Memo Felder habe, die in 2 Dateien gespeichert werden.
Das "Sortieren lassen" funktioniert, nur wie kann ich die Zeilen in dem einen MemoFeld mit dem anderen zusammen löschen lassen?
Wenn ich beide sortiere werden den Vokabeln ja ganz andere Bedeutungen zugewisen (Hallo=dog oder so was komisches).
Ich habe die bubblesort Methode benutzt.
LG
|
|
Sherly 
Hält's aus hier
Beiträge: 10
|
Verfasst: Fr 01.06.07 08:42
Sherly hat folgendes geschrieben: | Hallo nochmal.
Was ist denn, wenn ich 2 Memo Felder habe, die in 2 Dateien gespeichert werden.
Das "Sortieren lassen" funktioniert, nur wie kann ich die Zeilen in dem einen MemoFeld mit den anderen zusammen verschieben lassen?
Wenn ich beide sortiere werden den Vokabeln ja ganz andere Bedeutungen zugewisen (Hallo=dog oder so was komisches).
Ich habe die bubblesort Methode benutzt.
LG |
|
|
FiceGoesDelphi
      
Beiträge: 485
Win XP Prof
Delphi 2006
|
Verfasst: Fr 01.06.07 08:46
Du kannst doch beide Zeilen ganz genau ansprechen!
Mach das "Löschen" einfach für beide Memofeldern.
Verstehe nicht, was da für ein Problem sein könnte.
Liegt vllt auch daran, dass du uns keinen Code rein stellst!
_________________ <(^^<) <(^^)> (>^^)>
===================
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Fr 01.06.07 08:48
Sherly hat folgendes geschrieben: | Sherly hat folgendes geschrieben: | Hallo nochmal.
Was ist denn, wenn ich 2 Memo Felder habe, die in 2 Dateien gespeichert werden.
Das "Sortieren lassen" funktioniert, nur wie kann ich die Zeilen in dem einen MemoFeld mit den anderen zusammen verschieben lassen?
Wenn ich beide sortiere werden den Vokabeln ja ganz andere Bedeutungen zugewisen (Hallo=dog oder so was komisches).
Ich habe die bubblesort Methode benutzt.
LG |
|
Warum zitierst du dich selbst?
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
FiceGoesDelphi
      
Beiträge: 485
Win XP Prof
Delphi 2006
|
Verfasst: Fr 01.06.07 08:50
Er wollte wohl editieren drücken!
Da ist nen unterschied!
Zitat: | mit den anderen zusammen verschieben lassen? |
und
Zitat: | mit dem anderen zusammen löschen lassen? |
_________________ <(^^<) <(^^)> (>^^)>
===================
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Fr 01.06.07 08:52
nimm ne listbox und tausch immer den Index der 2. mit aus.
Oder du benutzt ein Record, dann passiert dir das gleich gar nicht.
Delphi-Quelltext 1: 2: 3: 4:
| record TVokabel = record Sprache1: String; Sprache2: String; end; |
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Sherly 
Hält's aus hier
Beiträge: 10
|
Verfasst: Fr 01.06.07 16:11
Ich wollte meinen text nicht zitieren ich wollte ihn ändern. Scusi ^^
Ich kannn ja mal das Programm rein stellen. Vll könnt ihr mal schaun.
Wenn man jetzt auf sortieren geht, sortiert er beide Spalten, was dann zu Prblemen mit den Vokabeln fürht(wie auch schon angesprochen). Vll könnt ihr mir ne Idee schicken?!
Mit dem Index versteh ich nit so ganz. Denk dran, dass ich total Anfänger bin ^^
LG
Einloggen, um Attachments anzusehen!
|
|
Sherly 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 05.06.07 09:24
Hat jemand ne Möglichkeit gefunden?
|
|
FiceGoesDelphi
      
Beiträge: 485
Win XP Prof
Delphi 2006
|
Verfasst: Di 05.06.07 09:35
ZeitGeist87 hat folgendes geschrieben: | nimm ne listbox und tausch immer den Index der 2. mit aus.
[highlight]Oder du benutzt ein Record, dann passiert dir das gleich gar nicht.
Delphi-Quelltext 1: 2: 3: 4:
| record TVokabel = record Sprache1: String; Sprache2: String; end; | [/highlight] |
Ein Record ist eine Möglichkeit, mit der du dein Problem beheben kannst!
So weißt du dem String der Sprache1 genau EINEN String der Sprache2 zu! Dann sortierst du nach Sprache1 und weil Sprache1 an Sprache2 gebunden ist, werden die auch nicht voneinander getrennt!
Hoffe ich habs richtig und verständlich erklärt, wozu du ein Record benutzen kannst!
Wie du ein Record genau deklarierst etc, findest du in der Delphi hilfe und bei www.gidf.de 
_________________ <(^^<) <(^^)> (>^^)>
===================
|
|
Sherly 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 06.06.07 12:24
Und das klappt auch, wenn ich als Speicherort 2 memofelder habe? Wie soll man das dann einbauen?
Meine Lehrerin meint das würde nicht funktionieren. Wobei es auch an meiner Lehrerin liegen könnte, die keine Ahnung hat.
LG
|
|
FiceGoesDelphi
      
Beiträge: 485
Win XP Prof
Delphi 2006
|
Verfasst: Mi 06.06.07 12:56
Ich weiß nicht genau, was du jetzt meinst!
Also du hast 2 Memofelder und gibst in die beide jeweils eine Vokabel ein
[Memo1] - - - - - - [Memo2]
Hund - - - - - - - -dog
Und dann soll auf buttonclick der Inhalt von beiden Memos in ein Record gespeichert werden?!
Ist absolut garkein Problem (meines Wissens  )
Wenn du dann also beide Vokabeln in einem Record gespeichert hast, kannst du dieses Record in einer ListBox wiedergeben, indem du einfach sagst:
Delphi-Quelltext 1: 2: 3: 4:
| for I := 0 to Length(DeinRecord) -1 do begin ListBox1.Items.Add(InttoStr(i+1) + ': ' + DeinRecord[i].Sprache1 + ' = ' + DeinRecord[i].Sprache2; |
Dann kannst du nach Sprache1 sortieren und ohne Probleme tauschen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.BTN_SortierenClick(Sender: TObject); var getauscht: boolean; i: integer; begin repeat getauscht := false; for i := 0 to Length(DeinRecord)-2 do begin if DeinRecord[i].Sprache1 > DeinRecord[i+1].Sprache1 then Tauschen(i); end; end; until getauscht = false; end; |
Die procedur dann oben deklarieren!
Delphi-Quelltext 1: 2: 3:
| public procedure Tauschen(Zaehler: Integer); |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Tauschen(Zaehler: Integer); var VokabelTemp: DeinRecord; begin VokabelTemp := DeinRecord[Zaehler]; DeinRecord[Zaehler] := DeinRecord[Zaehler+1]; DeinRecord[Zaehler+1] := VokabelTemp; getauscht := true; end; |
Ich hab das jetzt ohne Delphi aus dem Kopf geschrieben und bitte mögliche Fehler zu entschuldigen!
Aber du sollst ja sowieso nicht einfach "Copy & Paste" machen!
Vllt hat es dir ein wenig geholfen!
Kann auch sein das ich jetzt totalen schwachsinn geschrieben habe! Hoffe aber es klappt! 
_________________ <(^^<) <(^^)> (>^^)>
===================
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Mi 06.06.07 14:42
Ich würde ja ein Template-Prog und ein Practise-Prog schreiben.
Die Prozedur
procedure TForm1.Button2Click(Sender: TObject);
begin
Listbox1.items.add(HinzuDeutsch.Text+ ' / ' +HinzuEnglisch.Text);
HinzuDeutsch.Text:='';
HinzuEnglisch.Text:='';
end;
würde bei mir eher so aussehen:
procedure TForm1.Button2Click(Sender: TObject);
begin
Listbox1.items.add(HinzuDeutsch.Text+ '=' +HinzuEnglisch.Text);
HinzuDeutsch.Text:='';
HinzuEnglisch.Text:='';
end;
Bei FormCreate würde ich schon beim Practise-Prog die Datei Speicher.txt laden.
Dann musst du jedes mal beim "Weiter"-Button den ListBox1.ItemIndex um eins erhöhen, den du beim Laden auf null gesetzt hast.
Dann kommt der Augenblick:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| Application.MessageBox(Copy(ListBox1.Items[ListBox1.ItemIndex],1,pos(ListBox1.Items[ListBox1.ItemIndex],'=')-1), 'Zu übersetzende Vokabel:',MB_OK);
Lösen:
if Edit1.Text = Copy(ListBox1.Items[ListBox1.ItemIndex],pos(ListBox1.Items[ListBox1.ItemIndex],'=')+1,length (ListBox1.Items[ListBox1.ItemIndex]-pos(ListBox1.Items[ListBox1.ItemIndex],'=')+1)) then begin Application.MessageBox('Richtig!','Vokabel',MB_OK); inc(ListBox1.ItemIndex); Form1.VorherigeProzedur(Self); end; |
Müsste funktionieren. Oder du speicherst Deutsch.txt und Englisch.txt und vergleichst dann die Indems selbigen Index'.
|
|