Autor Beitrag
daniel.diener
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 15.06.07 14:43 
Hallo Leute,

ich weiss, dass es hier einige HangMan Beispiele im Forum gibt und ich habe mir auch viele angeschaurt, aber das ist meistens einfach noch zu hoch fuer mich.

Mein Problem ist, dass ich es nur in Anzeatzen schaffe mein Wort auf das Vorhandensein von Buchstaben zu pruefen. Ich versuche dabei alles so einfach zu programmieren wie moeglich.

Bis jetzt habe ich das hier geschrieben:

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:
procedure TFHangMan.FormCreate(Sender: TObject);
begin
  wort:='COMPUTERRAUM';

end;

procedure TFHangMan.BBuchstabeOKClick(Sender: TObject);
var
  Hilfswort: string;
  z: integer;
begin
  Hilfswort:=LWort.Caption;
  z:=Length(wort);
  while (z>=0)
  do begin
    if (wort[z] = EBuchstabe.Text)
    then begin
      Hilfswort[z]:=EBuchstabe.Text[z];
    end;
    z:=z-1;
  end;
  LWort.Caption:=Hilfswort;
end;


So dachte ich ist es logisch, aber es funktioniert nicht. Druecke ich den Button zum pruefen, passiert nichts.

Bin ich total auf dem Holzweg, oder kann man meinen Programm durch Aenderunden am Code noch zum Laufen bringen?


Ich bin Dankbar fuer jede Antwort!

Gruss
Daniel
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 15.06.07 15:05 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TFHangMan.BBuchstabeOKClick(Sender: TObject);
var
  Hilfswort: string;
  z: integer;
begin
  Hilfswort:=LWort.Caption;
  z:=Length(wort);
  while (z>=0)
  do begin
    if (wort[z] = EBuchstabe.Text)
    then begin
      Hilfswort[z]:=EBuchstabe.Text[z]; //Weg damit
    end;
    z:=z-1;
  end;
  LWort.Caption:=Hilfswort;
end;


EBuchstabe.text enthält nur einen Buchstaben oder?

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
daniel.diener Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 15.06.07 17:17 
Ja, EBuchstabe.text ist ein Buchstabe.

Wenn ich das [z] weg mache, sind die Typen Char und TCaptionChar inkompatibel /-:
zongo-joe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 134

win xp prof
D3, D4, D7
BeitragVerfasst: Fr 15.06.07 17:20 
schau Dir doch mal den Befehl POS an.
daniel.diener Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 15.06.07 18:07 
Habe ich, bekomme ich aber nicht hin ):

Kannst du mir ein Beispiel geben?
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Fr 15.06.07 18:22 
hier...du brauchst natürlich den char aus dem ding:
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:
procedure TFHangMan.FormCreate(Sender: TObject);
begin
  wort:='COMPUTERRAUM';

end;

procedure TFHangMan.BBuchstabeOKClick(Sender: TObject);
var
  Hilfswort: string;
  z: integer;
begin
  Hilfswort:=LWort.Caption;
  z:=Length(wort);
  while (z>0) //String geht von 1-Length!!!
  do begin
    if (wort[z] = EBuchstabe.Text[1]) //mit erstem zeichen!!! vergleichen
    then begin
      Hilfswort[z]:=EBuchstabe.Text[1];
    end;
    z:=z-1;
  end;
  LWort.Caption:=Hilfswort;
end;
daniel.diener Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 15.06.07 19:21 
Danke, das hat funktioniert. Ist ja auch logisch.
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Fr 15.06.07 19:21 
mit pos gehts so:
ausblenden Delphi-Quelltext
1:
2:
3:
...
if Pos(EBuchstabe.Text, wort) <> 0 then
...

Ich bitte, mich auf Fehler aufmerksam zu machen
daniel.diener Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 15.06.07 20:31 
user profile iconWolle92 hat folgendes geschrieben:
mit pos gehts so:
ausblenden Delphi-Quelltext
1:
2:
3:
...
if Pos(EBuchstabe.Text, wort) <> 0 then
...

Ich bitte, mich auf Fehler aufmerksam zu machen


Das würde dann also heißen, wenn Der Buchstabe in "EBuchstabe.Text" vorkommt, macht er dies und das. Richtig?
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Fr 15.06.07 20:33 
ja, einfach da einbauen, wo die entsprechende If-Abfrage hin muss
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: So 17.06.07 08:06 
lohnt aber nicht...die methode ohne pos ist einfacher...
und bei "kurzen" wörtern bis 50-100 zeichen macht das nix an der geschwindigkeit