Autor Beitrag
nanashi
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 31



BeitragVerfasst: Mo 23.11.09 18:31 
Hallo,
ich bins nochmal nur diesmal mit einem anderen Problem.

Aufgabe:
Ein gesuchtes Wort in der Ausgangssprache wird in einem Edit-Feld eingegeben. In einer ListBox wird dann die gesuchte Vokabel gemeinsam mit ihrer Übersetzung angezeigt. Sollte die gesuchte Vokabel nicht im Wörterbuch vorhanden sein, so werden zumindest die Vokabeln angezeigt, die alphabetisch davor bzw. danach stehen.
Außerdem möchte ich die jeweilige Vokabeln dann im richtigen Edit auch stehen haben (ein Edit für die deutsche und ein Edit für die englische Vokabel; in der listbox steht erst das englische wort dann eine lücke dann ein "=" dann wieder eine lücke und dann das deutsche wort.. also Wort = Wort ) (das Suchwort ist ein englisches)

Mein Quelltext ist bis jetzt:

ausblenden 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:
procedure TForm1.BitBtn3Click(Sender: TObject);
var i,p: Integer;
    Gefunden: Boolean;
    Suchwort,s: string;
begin
Suchwort:=Edit1.Text;
 if Suchwort <>'' then
  begin
   Gefunden:=false;
   i:=-1;
   while (i<ListBox1.Items.Count-1)and not gefunden do
    begin
     Inc(i);
     if Pos(Suchwort,ListBox1.Items[i])>0 then Gefunden:=True;
    end;
    if Gefunden
     then begin ListBox1.ItemIndex:=i;
          s:=ListBox1.Items[ListBox1.ItemIndex];
          p:=Pos('=',s);
          Delete(s,1,p+1);
          Edit2.Text:=s;
          end
     else
      ShowMessage('Suchwort wurde nicht gefunden');
  end;
end;

Er liest bei mir das Suchwort ein und findet es auch und gibt es aus, so wie ich es möchte. Dabei sind allerdings 2 Probleme:

1. wenn das Wort nicht in der Liste ist, dann findet er es auch nicht und gibt mir nur die message, dass das wort nicht drin ist aus (und nicht das umliegende nächste wort wie in der aufgabe beschrieben)... das war mir allerdings vorher schon klar, da ich nicht wusste wie ich das programmieren sollte

2. er hat ein problem mit h und b und a und e. D.h. wenn ich z.B. nur das h eingebe dann gibt er mir nicht das erste h-Wort aus sondern das erste b-Wort welches in der Liste steht. Das selbe gilt für e. wenn ich e eingebe sucht er mir ein a-wort. also werden a und b irgendwie bevorzugt. ansonsten (bei den anderen buchstaben) findet er immer das richtige.
Das ist z.B. sehr nervig wenn er das Wort "he" suchen soll und auf einmal "before" findet und übersetzt ausgibt, weil er b und h verwechselt hat.

Kann mir jemand helfen und sagen was an dem Quelltext falsch ist und wie ich es vllt programmieren könnte, damit er all diese Funktionen erfüllt? >.<

über Hilfe, Hinweise, Ideen usw. würde ich mich sehr freuen.^^

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Mo 23.11.09 19:55 
Soweit ich das nun überblicken kann, gibt er dir bei jedem eintrage, der nicht der richtige ist "nicht gefunden" aus oder?
Das ist Ziemlich doof ;x
Vielleicht solltest du erstmal eine schleife machen und eventuell eine boolean Variable.
Wenn er das Wort gefunden hat machst du ganz einfach
ausblenden Delphi-Quelltext
1:
var := true;					

und brichst die Schleife ab.
Danach wertest du das aus.
Wenn du nun nichts gefunden hast, wie willst du denn das "umliegende" Wort finden? oO
Wo nichts ist, kann auch nichts umliegen.

Und zum anderen Fehler
Das liegt daran, dass du nach pos = 1 suchen musst.
1 ist nämlich die erste stelle.
Ist natürlich schlecht wenn dort Sätze drin stehen, aber ich geh mal davon aus, dass es nur Worte sind.
nanashi Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 31



BeitragVerfasst: Mo 23.11.09 22:03 
hmm ich sehe was du meinst. ich werd den algorithmus nochmal schreiben und beachten was du gesagt hast. mit dem pos hast du natürlich recht. hmm alles gar nicht so leicht.. danke auf jeden fall für den hinweis!
wenn mir was besseres eingefallen ist stell ichs wieder rein.. bis dahin könnt ihr gerne noch weiter tipps geben und sagen wie mans machen könnte bzw. wie ihr es machen würdet. Danke!!