AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Galgenmännchen - Abfrageproblem -

Ein Thema von htxmlx · begonnen am 14. Nov 2008 · letzter Beitrag vom 16. Nov 2008
Antwort Antwort
htxmlx

Registriert seit: 23. Aug 2008
124 Beiträge
 
Delphi 7 Enterprise
 
#1

Galgenmännchen - Abfrageproblem -

  Alt 14. Nov 2008, 22:33
Ich habe versucht ein Galgenmännchen Programm zu proggen. So erstmal zur Form, es gibt ein Edit1 Feld, wo ein Buchstabe eingegeben werden kann und es gibt ein BitButton1, mit dem dieser Buchstabe bestägigt werden kann. Zuvor wird per Zufallsprinzip ein Wort aus einer liste ausgewählt, dort funktioniert jedoch alles einwandfrei..das gesuchte wort ist eine String variabel mit der bezeichnung 'wort'

So auf dem BitButton mit dem der eingegebene Buchstabe bestätigt werden soll und somit das wort auf diesen geprüft werden soll liegt dieses Ereignis:

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i, buchstabe, wlange:Integer; key:STring;
  begin
  key := Edit1.Text;
  buchstabe := 0;
  wlange := Length (wort);
  for i := 0 to (wlange) do
    begin
    inc (buchstabe);
    if Copy (wort, buchstabe, buchstabe) = key then
      begin
      TButton (FindComponent('Button' + IntToStr (buchstabe))).Caption := Copy (wort, buchstabe, buchstabe);
      end;
    end;
  end;
So die variable buchstabe ist der buchstabe der gerade geprüft werden soll. In der Form habe ich darunter 12 Buttons die jeweils für einen Buchstaben stehen. Wird nun also das wort (z.B. Drucker) auf 'r' gescannt, so müsste Button2.Caption dann 'r' sein und Button7.Caption auch 'r' sein.

Dies ist jedoch leider nicht so, es wird der erste buchstabe und der lezte richtig angezeigt, ich vermute das das was mit der for do schleife zu tun hat..aber ich bin mir nicht so sicher, vielleicht weiß einer von euch weiter...

Gruß, htxmlx
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Galgenmännchen - Abfrageproblem -

  Alt 14. Nov 2008, 22:46
Schau Dir mal die Hilfe zu Copy an und überprüf mal was Du dort machst .

Generell ist Dein Code ein wenig komisch. Ich schreib hier mal die Sachen:

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i, buchstabe, wlange:Integer; key:STring;
  begin
  key := Edit1.Text;
  buchstabe := 0;
  wlange := Length (wort);
  for i := 0 to (wlange) do // Die Schleife wird in der Form "Anzahl der Buchstaben + 1" Mal ausgeführt. Du willst sie aber nur für jeden Buchstaben im String ausführen. Also entweder i := 1 to wlange oder i := 0 to (wlange - 1).
    begin
    inc (buchstabe); // Eigentlich ist das völlig unnötig. Weil Du hast doch schon eine Variable die bei jedem Schleifendurchlauf inkrementiert wird -> i. wenn du die for schleife von "1 to wlange" definierst, gehst du jeden einzelnen Buchstaben von Wort durch
    if Copy (wort, buchstabe, buchstabe) = key then // das Copy ist falsch und eigentlich auch total unnötig. Wenn Du Copy verwenden willst, dann schau Dir die Hilfe zu Copy an. Alternativ überleg mal: So ein String kann man auch als ein Array of Char sehen. Vielleicht kommst Du drauf was effektiver wäre :).
      begin
      TButton (FindComponent('Button' + IntToStr (buchstabe))).Caption := Copy (wort, buchstabe, buchstabe); // Das Gleiche wie oben.
      end;
    end;
  end;
Fridolin Walther
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#3

Re: Galgenmännchen - Abfrageproblem -

  Alt 14. Nov 2008, 22:49
Hab den Fehler:
Du verwendest Copy falsch. Der dritte Parameter gibt die Anzahl der zufückgelieferten Zeichen zurück. Somit müsste bei Drucker nur der Letzte Buchstabe angezeigt werden. So ist es richtig:
Copy(wort, buchstabe, 1); Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
htxmlx

Registriert seit: 23. Aug 2008
124 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Galgenmännchen - Abfrageproblem -

  Alt 15. Nov 2008, 07:30
Ah ok danke erstmal, darauf das i für den buchstaben zu verwenden bin ich net gekommen...werd ich gleich mal tun. das mit dem copy werd ich auch nochmal überprüfen..

Gruß, htxmlx
  Mit Zitat antworten Zitat
htxmlx

Registriert seit: 23. Aug 2008
124 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Galgenmännchen - Abfrageproblem -

  Alt 15. Nov 2008, 07:35
Super dankeschön...der haupt fehler lag am copy, ich hatte das anders im kopf das man (string, von, bis) macht...also danke nocmal für die hilfe derrichtige code sieht jetzt so aus:
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i, wlange:Integer; key:STring;
  begin
  key := Edit1.Text;
  wlange := Length (wort);
  for i := 1 to (wlange) do
    begin
    if Copy (wort,i,1) = key then
      begin
      TButton (FindComponent('Button' + IntToStr (i))).Caption := key;
      end;
    end;
  end;
Gruß, htxmlx
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Galgenmännchen - Abfrageproblem -

  Alt 16. Nov 2008, 20:25
Warum nicht einfach "Wort[i]" statt "Copy(wort, i, 1)"?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz