Einzelnen Beitrag anzeigen

Coolboarder_9

Registriert seit: 31. Okt 2004
19 Beiträge
 
Delphi 6 Personal
 
#4

Re: galgenraten mit pos. was ist falsch?

  Alt 16. Jan 2005, 11:40
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.
  Mit Zitat antworten Zitat