Autor Beitrag
Sherly
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 23.05.07 12:49 
Moin und :welcome: 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. :idea:

Nur das Programm kommentarlos hier reinstellen und uns die Fehler suchen lassen, wird wohl keine soo gute Idee sein... :| :mahn:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
arj
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
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
BeitragVerfasst: Mi 23.05.07 12:50 
Stell mal eine konkrete Frage. Zu was brauchst du genau Hilfe? Zum Laden oder Speichern oder Anzeigen?
Sherly Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Mi 30.05.07 14:56 
user profile iconSherly 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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 31.05.07 21:04 
Danke dir... Echt super. Es funzt.
Mal schaun, was meine Lehrerin morgen sagt ^^
Sherly Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Fr 01.06.07 08:42 
user profile iconSherly 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 485

Win XP Prof
Delphi 2006
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Fr 01.06.07 08:48 
user profile iconSherly hat folgendes geschrieben:
user profile iconSherly 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 485

Win XP Prof
Delphi 2006
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: 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.

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 05.06.07 09:24 
Hat jemand ne Möglichkeit gefunden?
FiceGoesDelphi
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 485

Win XP Prof
Delphi 2006
BeitragVerfasst: Di 05.06.07 09:35 
user profile iconZeitGeist87 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.

ausblenden 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 :P

_________________
<(^^<) <(^^)> (>^^)>
===================
Sherly Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 485

Win XP Prof
Delphi 2006
BeitragVerfasst: 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 :roll: )
Wenn du dann also beide Vokabeln in einem Record gespeichert hast, kannst du dieses Record in einer ListBox wiedergeben, indem du einfach sagst:

ausblenden 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:

ausblenden 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!
ausblenden Delphi-Quelltext
1:
2:
3:
  public
    { Public-Deklarationen }
    procedure Tauschen(Zaehler: Integer);


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Tauschen(Zaehler: Integer);
var
  VokabelTemp: DeinRecord; //Aushilfsvariabel, in der du zwischenspeichern kannst!
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! :oops:

_________________
<(^^<) <(^^)> (>^^)>
===================
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: 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:
ausblenden 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'.