Oops. dacht ich hab als anhang drangehängt.
hier is der quelltext.
So hier der gesamte
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Memo2: TMemo;
Button2: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
var wort, raus, hilfs, strich : string[100];
{$R *.dfm}
procedure init(); // initialisieren
var i:integer;
begin
setlength(raus,length(wort)); //länge fest
wort:=''; // leer
hilfs:='';strich:=''; // leer
randomize;
randomize;
wort:=Form1.Memo2.Lines.Strings[random(Form1.Memo2.Lines.Count)]; // zufallswort
for i:=1 to length(wort) do
begin
strich := (strich + ' _'); // striche malen
end;
Form1.Memo1.Lines.Add(strich);
end;
procedure suchen (var x:integer);
var i,j,k : integer;
begin
SetLength(raus,length(wort));
SetLength(strich,(2*(length(wort))));
hilfs:=Form1.Edit1.Text; // buchtsben einlesen
x:=pos(hilfs,wort); // pos finden
strich[x*2]:=wort[x]; // strich ersetzen // neu ausgeben
if x <>0 then // wenn buchstabe vorhanden
begin
for i:=1 to x-1 do //alle vor gefundenen
raus[i]:=wort[i];
for j:=x+1 to length(wort) do // alle nach gefundenen
raus[j]:=wort[j];
for k:=0 to (2*(length(wort))) do
begin
hilfs:=Form1.Edit1.Text;
x:=pos(hilfs,raus); // pos finden
strich[x*2]:=wort[x]; // strich ersetzen
end;
Form1.Memo1.Lines.Add(strich);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//if messageBox(0,'Wirklich ein neues? dann verlierst du deinen Einsatz!','Neues Wort',mb_yesno)=6 then
//Memo1.Lines.Add('Verloren')
//else
//end;
init();
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
init();
end;
procedure TForm1.Button2Click(Sender: TObject);
var x : integer;
begin
Suchen(x);
end;
end.
aber der Fehler liegt in der suchen Prozedur genauer gesagt:
SetLength(strich,(2*(length(wort))));
hilfs:=Form1.Edit1.Text; // buchtsben einlesen
x:=pos(hilfs,wort); // pos finden
strich[x*2]:=wort[x];
da irgendwo. Ich denk mal in der letzten Zeile.
Ich versuch nochma das Programm anzufügen.
was nicht funktioniert:
ich starte das Prog. dann gibt er mir die richtige anzahl striche aus:
bsp wort = hallo dann ist strich _ _ _ _ _
nur dann rat ich einmal ein a und dann steht da:
_ a
mehr nciht . den rest gibts nicht. manchmal klappts wiederum
bsp: mandarine _ _ _ _ _ _ _ _ _ --> a raten
Strich: _ a _ _ a _ _ _ _
woran liegst also?.
Cu, Olli
Danke an Alle.
Auge um Auge, und am Ende sind beide blind.