AGB  ·  Datenschutz  ·  Impressum  







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

Memory - problem beim aufdecken

Ein Thema von Tigermoon · begonnen am 14. Nov 2005 · letzter Beitrag vom 14. Nov 2005
Thema geschlossen
Tigermoon

Registriert seit: 11. Mär 2005
Ort: Baumholder
100 Beiträge
 
Delphi 7 Enterprise
 
#1

Memory - problem beim aufdecken

  Alt 14. Nov 2005, 11:44
Hallo

Ich habe versucht ein kleines Memonrs zu programmieren
es funktioniert auch alles bis auf diese eine sache und ich weiß ned warum

Turns ist eine lokale variable und ich setzte sie auf null wenn ich das spiele starte.

Delphi-Quellcode:
procedure TMemoryfeld.aufdeckenOnClick(Sender:TObject);
var
pic1_turned, pic2_turned :integer;
BildNummer : integer;
begin

  //Array (TImage) Bild = Bilder auf der Fläche (insgesamt 24)
  //Array (Integer) Bilder = Name des sich darunterbefindenden Bildes (bild 1.JPG - 12. JPG)

  //Bildernummer des angeklickten Bildes
  BildNummer := (Sender as TImage).Tag;
  
  //angeklicktes Bild aufdecken
  Bild[BildNummer].Picture.LoadFromFile(inttostr(bilder[BildNummer])+'.JPG');
  bild[bildnummer].Enabled := false;

  //Anzahl umgedrehte Bilder
  turns := turns + 1;
  turns_anz.caption := inttostr(turns); {ausgabe zum test}

  //Erstes Bild
  if turns = 1 then
  begin
    pic1_turned := BildNummer;
    pic1.Caption := inttostr( Bildnummer ); {ausgabe zum test}
  end;

  //Zweites bild
  if turns = 2 then
  begin
    pic2_turned := BildNummer;
    pic2.Caption := inttostr( Bildnummer ); {ausgabe zum test}

    // bilder sind die gleichen
    if bilder[pic1_turned] = bilder[pic2_turned] then {<-- Fehler an der stelle}
    begin
       bild[pic1_turned].Visible := false;
       bild[pic2_turned].Visible := false;
       turns := 0;
    end;

    //bilder sind unterschiedlich
    if bilder[pic1_turned] <> bilder[pic2_turned] then
    begin
       bild[pic1_turned].Picture.LoadFromFile('back.JPG');
       bild[pic1_turned].Enabled := true;
       bild[pic2_turned].Picture.LoadFromFile('back.JPG');
       bild[pic2_turned].Enabled := true;
       turns := 0;
    end;

  end;
end;
und zwar tritt der fehler immer auf nach dem ich das zweite angeklickt habe
[Warnung] Spielfeld.pas(171): Variable 'pic1_turned' ist möglicherweise nicht initialisiert worden
dann kann ich bilder aufdecken solange ich will und es passiert nichts mehr

geht mir mal bitte nen tipp
oder programmiere ich das zu umständlich?

Kuss Tigermoon
Stephanie
 
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Memory - problem beim aufdecken

  Alt 14. Nov 2005, 11:59
pic1_turned und pic2_turned ebenfalls als Lokale Variable deklarieren dann geht´s
 
Tigermoon

Registriert seit: 11. Mär 2005
Ort: Baumholder
100 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Memory - problem beim aufdecken

  Alt 14. Nov 2005, 12:03
Hast du recht danke

und warum? wenn ich fragen darf....
Stephanie
 
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Memory - problem beim aufdecken

  Alt 14. Nov 2005, 12:07
bei turn = 1 wird pic1_turned initialisiert

ist turn = 2 geht die initialisierung verloren, da die variable pic1_turned prozedural ist !!
 
Tigermoon

Registriert seit: 11. Mär 2005
Ort: Baumholder
100 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Memory - problem beim aufdecken

  Alt 14. Nov 2005, 12:15
Jetzt wo du es sagst

da wäre ich nie drauf gekommen
Stephanie
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Memory - problem beim aufdecken

  Alt 14. Nov 2005, 12:22
Zitat von Baeuerle:
pic1_turned und pic2_turned ebenfalls als Lokale Variable deklarieren dann geht´s
Sie sind doch schon lokale Variablen? Du meinst, er soll sie global machen. Dann aber bitte als Felder der übergeordneten Klasse.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Tigermoon

Registriert seit: 11. Mär 2005
Ort: Baumholder
100 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Memory - problem beim aufdecken

  Alt 14. Nov 2005, 12:30
ja sorry

hatte es aber verstanden was er meinte

habe ein neues problem
mein programm friet ein bevor das bild aufgedeckt wird
hab eine pause von 1 sek drin

warum?

ich mache die pause damit man das zweite bild sieht (in meinem fall ehr sehen sollte)

Delphi-Quellcode:
procedure TMemoryfeld.aufdeckenOnClick(Sender:TObject);
var
BildNummer : integer;
begin

  //Array (TImage) Bild = Bilder auf der Fläche (insgesamt 24)
  //Array (Integer) Bilder = Name des sich darunterbefindenden Bildes (bild 1.JPG - 12. JPG)

  //Bildernummer des angeklickten Bildes
  BildNummer := (Sender as TImage).Tag;
  
  //angeklicktes Bild aufdecken
  Bild[BildNummer].Picture.LoadFromFile(inttostr(bilder[BildNummer])+'.JPG');
  bild[bildnummer].Enabled := false;

  //Anzahl umgedrehte Bilder
  turns := turns + 1;
  //turns_anz.caption := inttostr(turns); {ausgabe zum test}

  //Erstes Bild
  if turns = 1 then
  begin
    pic1_turned := BildNummer;
    //pic1.Caption := inttostr( Bildnummer ); {ausgabe zum test}
  end;

  //Zweites bild
  if turns = 2 then
  begin
    pic2_turned := BildNummer;
    //pic2.Caption := inttostr( Bildnummer ); {ausgabe zum test}

    sleep(1000); <<--- hier

    // bilder sind die gleichen
    if bilder[pic1_turned] = bilder[pic2_turned] then
    begin
       bild[pic1_turned].Visible := false;
       bild[pic2_turned].Visible := false;
       turns := 0;
    end;

    //bilder sind unterschiedlich
    if bilder[pic1_turned] <> bilder[pic2_turned] then
    begin
       bild[pic1_turned].Picture.LoadFromFile('back.JPG');
       bild[pic1_turned].Enabled := true;
       bild[pic2_turned].Picture.LoadFromFile('back.JPG');
       bild[pic2_turned].Enabled := true;
       turns := 0;
    end;

  end;
end;
Stephanie
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Memory - problem beim aufdecken

  Alt 14. Nov 2005, 12:33
Zitat von Tigermoon:
habe ein neues problem
Und desgen machst du bitte ein neues Topic auf, wie es in den Forenregel steht, dass für ein neues Thema ein neuer Thread erstellt werden soll.

Ich schließe dann mal hier.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Thema geschlossen


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 10:32 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