Entwickler-Ecke
Sonstiges (Delphi) - Problem mit eigenem Textadventure
Pataya - Mo 20.12.10 12:23
Titel: Problem mit eigenem Textadventure
Hallo erstmal (:
Ich wusste nicht genau, unter welchem Bereich ich mein Problem posten soll, daher schon mal im voraus eine Entschuldigung von mir, falls das hier der falsche Ort dafür sein sollte.
Ich sollte für den Unterricht ein Textadventure erstellen.
Das Problem dabei ist jetzt ,dass ich das noch nie gemacht habe und jetzt anhand der vom Lehrer gegebenen Infos versucht habe, eins auf die Beine zu stellen.
Ich bin nun soweit ich das beurteilen kann durch, allerdings bekomme ich ständig eine Fehlermeldung sobald ich das Programm starten will .
Ich habe schon gesucht und gesucht, aber ich finde den Fehler einfach nicht bzw ich weiß auch nicht, ob vielleicht etwas fehlt und das ganze deswegen nicht läuft.
Es wäre wirklich nett, wenn mir jemand sagen könnte, wo mein Fehler liegt, damit ich ihn beheben kann ( Abgabe ist nämlich leider schon in ein paar Tagen und ich möchte nur ungern etwas abgeben,was nicht funktioniert :( ).
Hier mein "Text" ( Ich hoffe, er ist nicht zu lang :/ ):
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: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261:
| unit Schulprojektbearbeitet;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, jpeg;
type TRaum = class Beschreibung : string; FotoReferenz : String; Gegenstand : String; Norden, Sueden, Westen, Osten : TRaum; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; procedure setAusgaenge (norden, sueden, westen, osten, hoch, runter : TRaum); end;
TRucksack = Class Item : Array [1..5] of String; procedure hinzufuegen (S:String); function ausgeben : String; Function voll: boolean; end;
TForm2 = class(TForm) Edit1: TEdit; Button1: TButton; Memo1: TMemo; Image1: TImage; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button3Click(Sender: TObject); private
public
end;
var
Form2: TForm2; aktuellerRaum: TRaum; Garten, Flur, Fluroben, Flur2, Flur3, Maggiesraum, Lisasraum, Bartszimmer, Elternschlafzimmer, Badezimmer, Badezimmer2, Kueche, TVRoom, Esszimmer, Wohnzimmer, Eingang : TRaum; Norden, Sueden, Westen, Osten: TRaum; Rucksack: TRucksack;
implementation begin
{$R *.dfm}
procedure TRucksack.hinzufuegen ( S:String); var i : integer ; begin i := 1; while (i <= 5) do
begin if (self.item[i]=S) then break else if self.item[i]= " then begin self.item[i] = s; break end; inc(i); end;
end;
function TRucksack.ausgeben : string; var i: integer; begin result := " ; i:=1; while (i <=5) do begin if(self.item[i] = ") then break else result := result + self.item[i] + ','; inc(i); end; end;
function TRucksack.voll : boolean; var i, j : integer ; begin result := false; j:= 0; for i := 1 to 5 do if (self.item[i]<> ") then inc(j); if(j=5) then result := true; end;
procedure TForm2.Button2Click(Sender: TObject); begin Raumwechsel('Norden'); end;
procedure TForm2.FormCreate(Sender: TObject); begin Rucksack:=TRucksack.create memo1.lines.add('Herzlich Willkommen in der Welt der Simpsons'); Garten := TRaum.Create; Eingang := TRaum.Create; Flur := TRaum.Create; Fluroben := TRaum.Create; Kueche := TRaum.Create; TVRoom := TRaum.Create; Wohnzimmer := TRaum.Create; Esszimmer := TRaum.Create; Flur2 := TRaum.create; Flur3 := TRaum.Create; Maggiesraum := TRaum.Create; Lisasraum := TRaum.Create; Bartszimmer :=TRaum.Create; Badezimmer := TRaum.Create; Badezimmer2 := TRaum.create; Elternschlafzimmer :=TRaum.Create; Garten.Beschreibung :=('Nun stehen Sie vor dem Haus der Simpsons.Treten Sie doch ein'); Eingang.Beschreibung :=('Wie Sie sehen werden Sie bereits erwartet'); Flur.Beschreibung :=('Sie stehen nun im Flur.Wohin wollen Sie als nächstes?'); Fluroben.Beschreibung :=('Sie haben den ersten Stock des Hauses betreten'); Kueche.Beschreibung :=('Haben Sie Hunger? Dann sind Sie hier genau richtig, denn Sie sind in der Küche gelandet'); Esszimmer.Beschreibung :=('Sie haben das Esszimmer betreten'); Wohnzimmer.Beschreibung := ('Sie befinden sich nun im gemütlichstem Zimmer des Hauses , dem Wohnzimmer'); TVRoom.Beschreibung :=('Erkennen Sie dieses Zimmer vielleicht wieder? Es ist wohl das bekannteste der Simpsonsfamilie'); Fluroben.Beschreibung :=('Nun stehen Sie im ersten Stock. Wohin soll es nun gehen?'); Flur2.Beschreibung :=('Nun stehen sie weiter Rechts im Flur und haben die Wahl zwischen dem Badezimmer und dem Elternschlafzimmer'); Flur3.Beschreibung :=('Sie haben sich dazu entschieden, weiter links in den Flur hinein zu gehen und haben nun die Wahl zwischen Barts Zimmer und dem zweiten Badezimmer') Bartszimmer.Beschreibung := ('Hier herrscht das Chaos.Sind Sie sicher ,dass sie hier hin wollten?'); Lisaszimmer.Beschreibung :=('Lust auf eine Runde Saxophon? Lisas Zimmer ist perfekt dafür!'); Elternschlafzimmer.Beschreibung := ('Hier im Elternschlafzimmer haben Sie ja eigentlich nichts zu suchen , aber wir drücken mal ein Auge zu'); Badezimmer.Beschreibung := ('Nach langem Suchen haben sie endlich das erste der zwei Badezimmer gefunden'); Badezimmer2.Beschreibung := ('Toilette frei, hier kommt das zweite Badezimmer'); Maggieszimmer.Beschreibung := ('Achtung, ein freilaufendes Baby, herumliegende Schnuller und Legowurfattacken gehören hier zur Standarteinrichtung'); Garten.setAusgaenge(Eingang, nil, nil, nil, nil, nil); Eingang.setAusgaenge(Flur, Garten, nil, nil, nil, nil); Flur.setAusgaenge(Kueche, Eingang, Wohnzimmer, Esszimmer ,Fluroben ,nil); Wohnzimmer.setAusgaenge(TVRoom, nil, nil, Flur, nil, nil); TVRoom.setAusgaenge(nil, Wohnzimmer, nil, Kueche, nil, nil); Kueche.setAusgaenge nil, Esszimmer, TVRoom, nil, nil, nil); Esszimmer.setAusgaenge(Kueche, nil, Flur, nil, nil, nil); Fluroben.setAusgaenge( Maggiesraum, Lisasraum, Flur2, Flur3, nil, Flur); Flur2.setAusgaenge(Badezimmer, Elternschlafzimmer, Fluroben, nil, nil, nil); Flur3.setAusgaenge(Badezimmer2, Bartszimmer, nil, Fluroben, nil, nil); Flur.Gegenstand:= ' '; Fluroben.Gegenstand:= ' '; Flur2.Gegenstand:= ' '; Flur3.Gegenstand:= ' '; Maggiesraum.Gegenstand:= 'blauer Schnuller'; Lisasraum.Gegenstand:= 'Saxophon'; Bartszimmer.Gegenstand:= 'Krusty-der-Clown-Aufziehpuppe'; Elternschlafzimmer.Gegenstand:= ' '; Badezimmer.Gegenstand := ' '; Badezimmer2.Gegenstand := ' '; Garten.Gegenstand := ' '; Eingang.Gegenstand := ' '; Kueche.Gegenstand := ' Mit rosa Glassur überzogener Donut'; TVRoom.Gegenstand := 'Duffbierdose'; Esszimmer.Gegenstand := ' '; Kueche.Gegenstand := ' '; Wohnzimmer. Gegenstand := ' '; aktuellerRaum := Garten ; Garten.Fotoreferenz := 'Bilder/Klassenraum.jpg'; Eingang.Fotoreferenz := 'Bilder/Eingang.jpg'; Flur.Fotoreferenz := 'Bilder/Flur.jpg'; Kueche.Fotoreferenz := 'Bilder/Kueche.jpg'; Esszimmer.Fotoreferenz := 'Bilder/Esszimmer.jpg'; TVRoom.Fotoreferenz := 'Bilder/TVRoom.jpg'; Wohnzimmer.Fotoreferenz := 'Bilder/Wohnzimmer.jpg'; Maggiesraum.Fotoreferenz := 'Bilder/Maggiesraum.jpg'; Lisasraum.Fotoreferenz := 'Bilder/Lisasraum.jpg'; Elternschlafzimmer.Fotoreferenz := 'Bilder/Elternschlafzimmer.jpg'; Badezimmer.Fotoreferenz := 'Bilder/Badezimmer1.jpg' Bartszimmer.Fotoreferenz := 'Bilder/Bartszimmer.jpg'; Badezimmer2.Fotoreferenz :='Bilder/Badezimmer2.jpg'; Image1.Picture.LoadFromFile(aktueller.Raum.Fotorefetenz); end;
procedure TRaum.setAusgaenge (norden, sueden, westen, osten : TRaum); begin self.Norden := norden; self.Sueden := sueden; self.westen := westen; self.osten := osten; end;
procedure TForm2.Raumwechsel (Eingabe:String); begin Memo1.clear; Rucksack.hinzufuegen(aktuellerRaum.Gegenstand); Eingabe := Edit1.text; if (Eingabe = 'Norden') and (aktuellerRaum.Norden <> nil) then aktuellerRaum := aktuellerRaum.Norden; if (Eingabe = 'Sueden') and (aktuellerRaum.Sueden <> nil) then aktuellerRaum := aktuellerRaum.Sueden; if (Eingabe = 'Westen') and (aktuellerRaum.Westen <> nil) then aktuellerRaum := aktuellerRaum.Westen; if (Eingabe = 'Osten') and (aktuellerRaum.Osten <> nil) then aktuellerRaum := aktuellerRaum.Osten; Memo1.Lines.add(aktuellerRaum.Beschreibung); Memo1.Lines.add(' '); Memo1.linesadd('Im Rucksack enthalten:' + Rucksack.ausgeben); if Rucksack.voll then Memo1.lines.add('Glückwunsch, Sie haben alle Gegenstände gefunden'); Memo1.lines.add(' '); Memo1.Lines.add('Wählen Sie die gewünchte Richtung in die Sie gehen möchten'); if aktuellerRaum.Norden <> nil then memo1.lines.add('--> Norden'); if aktuellerRaum.Sueden <> nil then memo1.Lines.add('--> Sueden'); if aktuellerRaum.Westen <> nil then memo1.Lines.add('--> Westen'); if aktuellerRaum.Osten <> nil then memo1.lines.add ('--> Osten'); end;
procedure TForm2.Button3Click(Sender: TObject); begin Raumwechsel('Osten'); end;
procedure TForm2.Button4Click(Sender: TObject); begin Raumwechsel('Westen'); end;
procedure TForm2.Button5Click(Sender: TObject); begin Raumwechsel('Sueden'); end;
procedure TForm2.Button1Click(Sender: TObject); var Eingabe : String; begin aktuellerRaum := Garten; memo1.clear; Eingabe := Edit1.text; if (Eingabe = 'Norden') and (aktuellerRaum.Norden <> nil) then aktuellerRaum := aktuellerRaum.Norden; if (Eingabe = 'Sueden') and (aktuellerRaum.Sueden <> nil) then aktuellerRaum := aktuellerRaum.Sueden; if (Eingabe = 'Westen') and (aktuellerRaum.Westen <> nil) then aktuellerRaum := aktuellerRaum.Westen; if (Eingabe = 'Osten') and (aktuellerRaum.Osten <> nil) then aktuellerRaum := aktuellerRaum.Osten; Memo1.Lines.add(aktuellerRaum.Beschreibung); if aktuellerRaum.Norden <> nil then memo1.lines.add('--> Norden'); if aktuellerRaum.Sueden <> nil then memo1.Lines.add('--> Sueden'); if aktuellerRaum.Westen <> nil then memo1.Lines.add('--> Westen'); if aktuellerRaum.Osten <> nil then memo1.lines.add ('--> Osten'); Memo1.Lines.add(aktuellerRaum.Beschreibung); end;
end. |
Wenn Ihr irgendwelche Fehler findet, bitte bitte sagt Bescheid !
Danke Schön schon einmal im Voraus (:
Moderiert von
Narses: Delphi-Tags hinzugefügt
Jann1k - Mo 20.12.10 12:32
Es wäre gut wenn du deinen Quelltext in delphi Tags einbindest, das macht ihn gleich viel lesbarer. Auch könntest du uns ruhig sagen, welche Fehlermeldung du kriegst bzw. welche Zeile vom Compiler markiert wird.
ALF - Mo 20.12.10 12:39
Hi, :welcome: hier im DF
Fehler hätt ich schon so beim überfliegen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| {$R *.dfm} procedure TRucksack.hinzufuegen ( S:String); vari : integer; begin ...... ...... while ( i <= 5) do begin if ( self.item[i]=S) then break ekse if self.item[i]= " then begin selt.item[i] = s; ..... ..... procedure TForm2.Button2Click(Sender: TObject); begin begin; Raumwechsel('Norden'); end; |
Delphicode kannst Du mit
[
delphi]
hier steht dann
dein delphicode
[/
delphi]
ins lesbare bringen.
ich befürchte das Du bei Dir, keine vernünftiges einrücken beim schreiben von Code machst!
so entstehen diese Fehler wie auch Zeile 89-99!
Gruss Alf
Pataya - Mo 20.12.10 13:28
Ich bekomme immer die Fehlermeldung : Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Aber ich weiß nicht wirklich, was damit gemeint ist geschweige denn, wie ich diesen Fehler beheben kann.
Auch wird mir beim speichern immer angezeigt, dass Feld form2.sueden ( genauso wie bei feld form2.Fotoreferenz, Feld Form2.Gegenstand, Feld Form2.Osten, Feld Form2. Osten und Feld Form2.Westen) keine entsprechende Komponente besitzen würde.
Die anderen Rechtschreibfehler habe ich geändert, aber trotzdem bekomme ich noch die Fehlermeldungen und kann das programm nicht starten :(
ALF - Mo 20.12.10 13:34
Schau mal in Zeile 198 wo kommt den da plötzlich TForm1 her :gruebel:
Ich schätze auch, das Du nicht alle Fehler behoben hast!
Zeilen 89-99!
Gruss Alf
Pataya - Mo 20.12.10 13:39
Danke, das war ein Tippfehler (:
Aber auch wenn es richtig geschrieben ist, kommt noch die Fehlermeldung und das Programm lässt sich nicht starten .
Pataya - Mo 20.12.10 17:55
Ja ich korrigiere das in meinem richtigen Programm natürlich auch.
Bis jetzt läuft es aber trotzdem noch nicht :(
Ich habe auch schon versucht es ein wenig strukturierter zu gestalten, was mir allerdings nicht sonderlich gelungen ist ( habe ich hier aber auch noch nicht abgeändert).
Was ist denn an Z.89-99 falsch?
Ja ich habe das selbe Problem auch nochmal bei delphipraxis gepostet, darf man das nicht?
Ich brauche schließlich Hilfe damit ,da schadet es meiner Meinung nach nicht, mehrere Antworten zu bekommen oder?
ALF - Mo 20.12.10 18:06
Pataya hat folgendes geschrieben : |
Was ist denn an Z.89-99 falsch? |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function TRucksack.voll : boolean; var i, j : integer ; begin;end;result := false; j:= 0; for i := 1 to 5 do if (self.item[i]<> " ) then inc(j); if( j=5) then result := true; end;..... |
Was fällt dir dabei auf!?
Pataya hat folgendes geschrieben : |
Ja ich habe das selbe Problem auch nochmal bei delphipraxis gepostet, darf man das nicht?
Ich brauche schließlich Hilfe damit ,da schadet es meiner Meinung nach nicht, mehrere Antworten zu bekommen oder? |
Dürfen schon, nur sollte man es mitteilen, sonst gibt es Antworten/Fragen unserer seits, obwohl vielleicht schon alles geklärt ist usw.
Kann ja sein das die Jungs in der DP, dort die Fehler schon genannt haben und Du sie dort korrigierst...
und wir hier sinnlos darauf Hinweisen :evil:
Gruss ALf
Pataya - Mo 20.12.10 19:20
oh du meinst das begin und end, die direkt aufeinander folgen?
stimmt, das muss weg (:
achso, ok das wusste ich nicht. Tut mir Leid.
Aber jetzt weiß es ja jeder.
Allerdings habe ich immer noch keine Lösung :(
ALF - Mo 20.12.10 19:36
Wenn Du alle Bugs beseitigt hast, kannst Du ja im ersten Post noch mal die überarbeitete Version einfügen.
Ansonsten währe schön auch ne Fehlernummer/Zeile anzugeben wo Delphi sagt, ne kann nicht kompiliert werden!
Gruss Alf
Pataya - Mo 20.12.10 20:33
Das ist ja bei mir das Problem, Delphi sagt mir garnicht erst in welcher Zeile der Fehler ist :(
ALF - Mo 20.12.10 22:00
Dann häng das ganze Projekt mal als zip/rar ran. Dann kann man es sich genauer anschauen!
Zumal Du oben auch nichts aktuallisiert hast, ob die ganzen Fehler weg sind!
Gruss Alf
jaenicke - Mo 20.12.10 22:44
Pataya hat folgendes geschrieben : |
Das ist ja bei mir das Problem, Delphi sagt mir garnicht erst in welcher Zeile der Fehler ist :( |
Also wenn du den Fehler mit dem Objektverweis meinst: Der kommt vermutlich von Addons, die du in Delphi drin hast. Zum Beispiel die CnWizards unter Windows 7.
Oder wird der wirklich als Kompilierfehler oder wenn das Programm läuft angezeigt?
Und wegen den Fehlern mit fehlenden Komponenten: Du hast da in dem Code direkt unterhalb von
TForm2 = class(TForm) herumgefummelt und unter anderem diese Zeile eingefügt und vermutlich immer noch drin:
Delphi-Quelltext
1:
| Norden, Sueden, Westen, Osten : TRaum; |
Und diese Komponenten gibt es auf deinem Formular ja wirklich nicht.
Wenn du etwas in die Formularklasse packen willst, dann unter private, public, ..., aber nicht direkt ohne Sichtbarkeitsbezeichner.
Pataya - Di 21.12.10 00:01
ich habe das jetzt einmal unter privat gepackt,aber das Programm weißt immer noch die selbe Fehlermeldung auf :(
langsam verzweifel ich wirklich :(
jaenicke - Di 21.12.10 00:27
Dann zeig halt einmal deinen aktuellen Code und schreib dazu welche Fehlermeldung wo kommt. Oder mach einen Screenshot davon, wenn du nicht siehst wo die Fehlermeldung passiert. Was auch immer.
Wenn du nur sagst, dass da irgendwo ein Fehler auftritt, können wir dir auch nicht helfen. In dem zuerst geposteten Quelltext sind ja diverse Fehler drin, insofern ist eben die Frage was du davon korrigiert hast etc.
Pataya - Di 21.12.10 01:47
das ist ja schon mal das Hauptproblem:
bei mir kommt nicht an stelle abc und an stelle xyz eine Fehlermeldung.
ich will das Programm starten und dann kommt direkt eine.
mir wird nicht angezeigt wo , ich bekomme sie einfach nur.
Moderiert von
Martok: Doppelpost zusammengeführt
so, ich habe das ganze nun nochmals auch auf die vielen Tipps von eurer Seite aus geändert ( zB was die Struktur angeht).
Allerdings geht es immer noch nicht :(
jaenicke - Di 21.12.10 02:00
Nimm das begin nach implementation weg...
Dass das da nicht hingehört, siehst du in jedem neuen leeren Projekt.
delphi10 - Di 21.12.10 07:23
@pataya
Würde ja gerne mal testetn, habe aber keine Lust die ganze Form nachzukupfern. Häng mal das Projekt komplett dran. Zumindest die *.dfm
EDit: Habe noch zu selig Apple2-Zeiten selber Textads geschrieben, daher zu diesem Thema immer Interesse
Pataya - Di 21.12.10 12:06
ich weiß nicht genau,ob das die datei ist ( denn eine datei mit der genannten endung habe ich garnicht )aber ich hoffe es:
jaenicke - Di 21.12.10 12:35
Pataya hat folgendes geschrieben : |
ich weiß nicht genau,ob das die datei ist ( denn eine datei mit der genannten endung habe ich garnicht ) |
Also erstens hast du dann ein Problem oder die Dateiendungen ausgeblendet.
Die angehängte Datei ist die Projektdatei, da steht nur drin welche Dateien zum Projekt gehören und der Projektquelltext. Nicht der der Formulare und Units.
// EDIT:
Interessant ist die Schulprojektbearbeitet.dfm.
Hast du denn eigentlich den Fehler, den ich genannt habe, schon behoben?
delphi10 - Di 21.12.10 12:53
Diese Unit läuft erstmal jetzt fehlerfrei, da aber die DFM und die Bildreferencen fehlen nützt das nicht viel. Auf jeden Fall kannst du erstmal mit der Unit jetzt weitermachen.
Gefühlte Fehleranzahl korrigiert = Zeilenzahl. Zieh dir Grundlagen rein und tippe sorgfältiger. Es sind viele Fehler dabei, die eigentlich nur Flüchtigkeitsfehler sind.
In der *.DPR kommentiere mal die Zeile mit der Taskbar aus.
Pataya - Mi 22.12.10 00:09
Langsam verzweifel ich wirklich.
Was ist denn an dem nachfolgendem Delphicode noch falsch?
Selbst die vorgegebene Lösung läuft bei mir nicht (angeblich immer noch der selbe Fehler wie zuvor).
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: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263:
| unit Schulprojektbearbeitet;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, jpeg;
type TRaum = class Beschreibung : string; FotoReferenz : String; Gegenstand : String; Norden, Sueden, Westen, Osten : TRaum;
procedure setAusgaenge (norden, sueden, westen, osten, hoch, runter : TRaum); end;
TRucksack = Class Item : Array [1..5] of String; procedure hinzufuegen (S:String); function ausgeben : String; Function voll: boolean; end;
TForm1= class(TForm1) Edit1: TEdit; Button1: TButton; Memo1: TMemo; Image1: TImage; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Raumwechsel (Eingabe:String); private
public
end;
var
Form1: TForm1; aktuellerRaum: TRaum; Garten, Flur, Fluroben, Flur2, Flur3, Maggiesraum,Maggieszimmer,Lisaszimmer, Lisasraum, Bartszimmer, Elternschlafzimmer, Badezimmer, Badezimmer2, Kueche, TVRoom, Esszimmer, Wohnzimmer, Eingang : TRaum; Norden, Sueden, Westen, Osten: TRaum; Rucksack: TRucksack;
implementation
{$R *.dfm}
procedure TRucksack.hinzufuegen ( S:String); var i : integer ; begin i := 1; while (i <= 5) do
begin if (self.item[i]=S) then break else if self.item[i]= '' then begin self.item[i] := s; break end; inc(i); end;
end;
function TRucksack.ausgeben : string; var i: integer; begin result := '' ; i:=1; while (i <=5) do begin if(self.item[i] = '') then break else result := result + self.item[i] + ','; inc(i); end; end;
function TRucksack.voll : boolean; var i, j : integer ; begin result := false; j:= 0; for i := 1 to 5 do if (self.item[i]<> '') then inc(j); if(j=5) then result := true; end;
procedure TForm1.Button2Click(Sender: TObject); begin Form2.Raumwechsel('Norden'); end;
procedure TForm1.FormCreate(Sender: TObject); begin Rucksack:=TRucksack.create; memo1.lines.add('Herzlich Willkommen in der Welt der Simpsons'); Garten := TRaum.Create; Eingang := TRaum.Create; Flur := TRaum.Create; Fluroben := TRaum.Create; Kueche := TRaum.Create; TVRoom := TRaum.Create; Wohnzimmer := TRaum.Create; Esszimmer := TRaum.Create; Flur2 := TRaum.create; Flur3 := TRaum.Create; Maggiesraum := TRaum.Create; Lisasraum := TRaum.Create; Bartszimmer :=TRaum.Create; Lisaszimmer :=TRaum.Create; Badezimmer := TRaum.Create; Badezimmer2 := TRaum.create; Elternschlafzimmer :=TRaum.Create; Garten.Beschreibung :=('Nun stehen Sie vor dem Haus der Simpsons.Treten Sie doch ein'); Eingang.Beschreibung :=('Wie Sie sehen werden Sie bereits erwartet'); Flur.Beschreibung :=('Sie stehen nun im Flur.Wohin wollen Sie als nächstes?'); Fluroben.Beschreibung :=('Sie haben den ersten Stock des Hauses betreten'); Kueche.Beschreibung :=('Haben Sie Hunger? Dann sind Sie hier genau richtig, denn Sie sind in der Küche gelandet'); Esszimmer.Beschreibung :=('Sie haben das Esszimmer betreten'); Wohnzimmer.Beschreibung := ('Sie befinden sich nun im gemütlichstem Zimmer des Hauses , dem Wohnzimmer'); TVRoom.Beschreibung :=('Erkennen Sie dieses Zimmer vielleicht wieder? Es ist wohl das bekannteste der Simpsonsfamilie'); Fluroben.Beschreibung :=('Nun stehen Sie im ersten Stock. Wohin soll es nun gehen?'); Flur2.Beschreibung :=('Nun stehen sie weiter Rechts im Flur und haben die Wahl zwischen dem Badezimmer und dem Elternschlafzimmer'); Flur3.Beschreibung :=('Sie haben sich dazu entschieden, weiter links in den Flur hinein zu gehen und haben nun die Wahl zwischen Barts Zimmer und dem zweiten Badezimmer'); Bartszimmer.Beschreibung := ('Hier herrscht das Chaos.Sind Sie sicher ,dass sie hier hin wollten?'); Lisaszimmer.Beschreibung :=('Lust auf eine Runde Saxophon? Lisas Zimmer ist perfekt dafür!'); Elternschlafzimmer.Beschreibung := ('Hier im Elternschlafzimmer haben Sie ja eigentlich nichts zu suchen , aber wir drücken mal ein Auge zu'); Badezimmer.Beschreibung := ('Nach langem Suchen haben sie endlich das erste der zwei Badezimmer gefunden'); Badezimmer2.Beschreibung := ('Toilette frei, hier kommt das zweite Badezimmer'); Maggieszimmer.Beschreibung := ('Achtung, ein freilaufendes Baby, herumliegende Schnuller und Legowurfattacken gehören hier zur Standarteinrichtung'); Garten.setAusgaenge(Eingang, nil, nil, nil, nil, nil); Eingang.setAusgaenge(Flur, Garten, nil, nil, nil, nil); Flur.setAusgaenge(Kueche, Eingang, Wohnzimmer, Esszimmer ,Fluroben ,nil); Wohnzimmer.setAusgaenge(TVRoom, nil, nil, Flur, nil, nil); TVRoom.setAusgaenge(nil, Wohnzimmer, nil, Kueche, nil, nil); Kueche.setAusgaenge (nil, Esszimmer, TVRoom, nil, nil, nil); Esszimmer.setAusgaenge(Kueche, nil, Flur, nil, nil, nil); Fluroben.setAusgaenge( Maggiesraum, Lisasraum, Flur2, Flur3, nil, Flur); Flur2.setAusgaenge(Badezimmer, Elternschlafzimmer, Fluroben, nil, nil, nil); Flur3.setAusgaenge(Badezimmer2, Bartszimmer, nil, Fluroben, nil, nil); Flur.Gegenstand:= ' '; Fluroben.Gegenstand:= ' '; Flur2.Gegenstand:= ' '; Flur3.Gegenstand:= ' '; Maggiesraum.Gegenstand:= 'blauer Schnuller'; Lisasraum.Gegenstand:= 'Saxophon'; Bartszimmer.Gegenstand:= 'Krusty-der-Clown-Aufziehpuppe'; Elternschlafzimmer.Gegenstand:= ' '; Badezimmer.Gegenstand := ' '; Badezimmer2.Gegenstand := ' '; Garten.Gegenstand := ' '; Eingang.Gegenstand := ' '; Kueche.Gegenstand := ' Mit rosa Glassur überzogener Donut'; TVRoom.Gegenstand := 'Duffbierdose'; Esszimmer.Gegenstand := ' '; Kueche.Gegenstand := ' '; Wohnzimmer. Gegenstand := ' '; aktuellerRaum := Garten ; Garten.Fotoreferenz := 'Bilder/Klassenraum.jpg'; Eingang.Fotoreferenz := 'Bilder/Eingang.jpg'; Flur.Fotoreferenz := 'Bilder/Flur.jpg'; Kueche.Fotoreferenz := 'Bilder/Kueche.jpg'; Esszimmer.Fotoreferenz := 'Bilder/Esszimmer.jpg'; TVRoom.Fotoreferenz := 'Bilder/TVRoom.jpg'; Wohnzimmer.Fotoreferenz := 'Bilder/Wohnzimmer.jpg'; Maggiesraum.Fotoreferenz := 'Bilder/Maggiesraum.jpg'; Lisasraum.Fotoreferenz := 'Bilder/Lisasraum.jpg'; Elternschlafzimmer.Fotoreferenz := 'Bilder/Elternschlafzimmer.jpg'; Badezimmer.Fotoreferenz := 'Bilder/Badezimmer1.jpg'; Bartszimmer.Fotoreferenz := 'Bilder/Bartszimmer.jpg'; Badezimmer2.Fotoreferenz :='Bilder/Badezimmer2.jpg'; end;
procedure TRaum.setAusgaenge (norden, sueden, westen, osten, hoch, runter : TRaum); begin self.Norden := norden; self.Sueden := sueden; self.westen := westen; self.osten := osten; end;
procedure TForm1.Raumwechsel (Eingabe:String); begin Memo1.clear; Rucksack.hinzufuegen(aktuellerRaum.Gegenstand); Eingabe := Edit1.text; if (Eingabe = 'Norden') and (aktuellerRaum.Norden <> nil) then aktuellerRaum := aktuellerRaum.Norden; if (Eingabe = 'Sueden') and (aktuellerRaum.Sueden <> nil) then aktuellerRaum := aktuellerRaum.Sueden; if (Eingabe = 'Westen') and (aktuellerRaum.Westen <> nil) then aktuellerRaum := aktuellerRaum.Westen; if (Eingabe = 'Osten') and (aktuellerRaum.Osten <> nil) then aktuellerRaum := aktuellerRaum.Osten; Memo1.Lines.add(aktuellerRaum.Beschreibung); Memo1.Lines.add(' '); Memo1.lines.add('Im Rucksack enthalten:' + Rucksack.ausgeben); if Rucksack.voll then Memo1.lines.add('Glückwunsch, Sie haben alle Gegenstände gefunden'); Memo1.lines.add(' '); Memo1.Lines.add('Wählen Sie die gewünchte Richtung in die Sie gehen möchten'); if aktuellerRaum.Norden <> nil then memo1.lines.add('--> Norden'); if aktuellerRaum.Sueden <> nil then memo1.Lines.add('--> Sueden'); if aktuellerRaum.Westen <> nil then memo1.Lines.add('--> Westen'); if aktuellerRaum.Osten <> nil then memo1.lines.add ('--> Osten'); end;
procedure TForm1.Button3Click(Sender: TObject); begin Raumwechsel('Osten'); end;
procedure TForm1.Button4Click(Sender: TObject); begin Raumwechsel('Westen'); end;
procedure TForm1.Button5Click(Sender: TObject); begin Raumwechsel('Sueden'); end;
procedure TForm1.Button1Click(Sender: TObject); var Eingabe : String; begin aktuellerRaum := Garten; memo1.clear; Eingabe := Edit1.text; if (Eingabe = 'Norden') and (aktuellerRaum.Norden <> nil) then aktuellerRaum := aktuellerRaum.Norden; if (Eingabe = 'Sueden') and (aktuellerRaum.Sueden <> nil) then aktuellerRaum := aktuellerRaum.Sueden; if (Eingabe = 'Westen') and (aktuellerRaum.Westen <> nil) then aktuellerRaum := aktuellerRaum.Westen; if (Eingabe = 'Osten') and (aktuellerRaum.Osten <> nil) then aktuellerRaum := aktuellerRaum.Osten; Memo1.Lines.add(aktuellerRaum.Beschreibung); if aktuellerRaum.Norden <> nil then memo1.lines.add('--> Norden'); if aktuellerRaum.Sueden <> nil then memo1.Lines.add('--> Sueden'); if aktuellerRaum.Westen <> nil then memo1.Lines.add('--> Westen'); if aktuellerRaum.Osten <> nil then memo1.lines.add ('--> Osten'); Memo1.Lines.add(aktuellerRaum.Beschreibung); end;
end. |
bummi - Mi 22.12.10 01:12
Wenn Du wirklich willst daß Dir jemand hilft pack mal den kompletten Sourcecode mit dfm, pas, dpr aller beteiligten Dateien in ein Zip-File.
jaenicke - Mi 22.12.10 03:12
Pataya hat folgendes geschrieben : |
(angeblich immer noch der selbe Fehler wie zuvor). |
Welcher?
Mach einen Screenshot vom kompletten Delphi, wenn der Fehler auftritt, und häng den an, wenn du nicht in der Lage bist zu schreiben was genau für ein Fehler auftritt.
delphi10 - Mi 22.12.10 07:23
Pataya hat folgendes geschrieben : |
Langsam verzweifel ich wirklich.
Was ist denn an dem nachfolgendem Delphicode noch falsch?
Selbst die vorgegebene Lösung läuft bei mir nicht (angeblich immer noch der selbe Fehler wie zuvor).
|
Ich habe nix davon geschrieben, dass das Programm nach meiner Bearbeitung läuft. Lediglich die Unit läßt sich fehlerfrei kompilieren. Mach dir bitte jetzt die Mühe, ALLE Projctdateien dranzuhängen. Wenn du nicht weißt was alles dazugehört, dann zippe den kompletten Projektordner und häng ihn dran. Ohne weiter Informationen gibts hier keinen weiteren Anschiss^8^8luss unter dieser Nummer(sic).
Pataya - Mi 22.12.10 16:07
Pataya hat folgendes geschrieben : |
Ich bekomme immer die Fehlermeldung : Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Aber ich weiß nicht wirklich, was damit gemeint ist geschweige denn, wie ich diesen Fehler beheben kann.
Auch wird mir beim speichern immer angezeigt, dass Feld form2.sueden ( genauso wie bei feld form2.Fotoreferenz, Feld Form2.Gegenstand, Feld Form2.Osten, Feld Form2. Osten und Feld Form2.Westen) keine entsprechende Komponente besitzen würde.
Die anderen Rechtschreibfehler habe ich geändert, aber trotzdem bekomme ich noch die Fehlermeldungen und kann das programm nicht starten :( |
DAS ist die Fehlermeldung.
delphi10 hat folgendes geschrieben : |
Pataya hat folgendes geschrieben : | Langsam verzweifel ich wirklich.
Was ist denn an dem nachfolgendem Delphicode noch falsch?
Selbst die vorgegebene Lösung läuft bei mir nicht (angeblich immer noch der selbe Fehler wie zuvor).
|
Ich habe nix davon geschrieben, dass das Programm nach meiner Bearbeitung läuft. Lediglich die Unit läßt sich fehlerfrei kompilieren. Mach dir bitte jetzt die Mühe, ALLE Projctdateien dranzuhängen. Wenn du nicht weißt was alles dazugehört, dann zippe den kompletten Projektordner und häng ihn dran. Ohne weiter Informationen gibts hier keinen weiteren Anschiss^8^8luss unter dieser Nummer(sic). |
Das Programm lässt sich bei mir aber eben nicht kompilieren . Das meinte ich damit. Ich bekomme immer noch die ( oben genannte ) Fehlermeldung.
Ich werde jetzt mal versuchen, alle Dateien irgendwie noch hier hochzuladen ( ausgenommen die Bilddateien, das sind einfach zu viele ).
Pataya - Mi 22.12.10 16:09
Das müssten soweit alle Dateien sein.
delphi10 - Mi 22.12.10 16:15
Pataya hat folgendes geschrieben : |
Ich bekomme immer die Fehlermeldung : Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Das Programm lässt sich bei mir aber eben nicht kompilieren . Das meinte ich damit. Ich bekomme immer noch die ( oben genannte ) Fehlermeldung. |
Nun, das wird wohl in einer der fehlenden Dateien ausgelöst.
Zitat: |
Ich werde jetzt mal versuchen, alle Dateien irgendwie noch hier hochzuladen ( ausgenommen die Bilddateien, das sind einfach zu viele ). |
Na, denn mach hinne...
Moderiert von
Narses: Zitat-Tag-Reste am Anfang entfernt.
jaenicke - Mi 22.12.10 16:28
Pataya hat folgendes geschrieben : |
Das müssten soweit alle Dateien sein. |
Nein, das sind nicht alle. Das sind nur die Projektdateien, nicht aber die des Formulars.
Schulprojektbearbeitet.pas und
Schulprojektbearbeitet.dfm fehlen noch. Das kann doch nicht so schwer sein... :roll:
Und wie gesagt, ein Screenshot von Delphi wäre auch sinnvoll. Denn wie gesagt, das hört sich nicht unbedingt nach einem Programmfehler an...
Pataya - Mi 22.12.10 16:53
Die Dateien habe ich aber garnicht , zumindest sehe ich sie in dem entsprechendem Ordner nirgendwo.
Hier mal der Screenshot mit der Fehlermeldung.
delphi10 - Mi 22.12.10 16:56
Pataya hat folgendes geschrieben : |
Das müssten soweit alle Dateien sein. |
Sorry, aber ich glaub ich gebs auf. Ich glaubs einfach nicht :autsch: :twisted:
Mift, zu spät
Narses - Mi 22.12.10 16:59
Moin!
Pataya hat folgendes geschrieben : |
Das müssten soweit alle Dateien sein. |
Du solltest besser mal alle Dateien, aber OHNE die EXE, in das Archiv packen. Besonders wichtig sind die *.pas und *.dfm-Dateien. :idea:
cu
Narses
Pataya - Mi 22.12.10 17:01
Ich habe nochmal nachgesehen und doch noch etwas gefunden .
Ich denke ( und hoffe ) das es die Datei ist.
jaenicke - Mi 22.12.10 17:33
Also ich frage mich echt wie du das machst, dass immer Dateien fehlen. Na gut, die .dpr war immerhin im letzten Zip drin...
Das Problem ist, dass du im Quelltext stehen hast Form1 und im Projektquelltext Form2. Zudem hast du an der Deklaration des Formulars herumgefummelt... :roll:
Erstens mache aus
TForm1= class(TForm1) wieder
TForm1= class(TForm), zweitens benenne dein Formular im Objektinspektor wieder Form1 (Eigenschaft Name). Drittens mache im Projektquelltext (Projekt --> Quelltext anzeigen) aus
Delphi-Quelltext
1:
| Application.CreateForm(TForm2, Form2); |
das:
Delphi-Quelltext
1:
| Application.CreateForm(TForm1, Form1); |
Und weiter oben steht noch
, das muss auch
heißen.
Der Rest sind Tippfehler... die zeigt Delphi dir dann schon...
ALF - Mi 22.12.10 18:28
und wo kommt das wieder her !?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button2Click(Sender: TObject); begin Form2.Raumwechsel('Norden'); end;
procedure TForm1.Raumwechsel (Eingabe:String); begin Memo1.clear; Rucksack.hinzufuegen(aktuellerRaum.Gegenstand); ...... ...... end; |
langsam frage ich mich, ob du das Prog geschrieben hast oder nur gekupfert!?
und damit es nicht auffällt hast Du selber noch drin rumgemacht!
Gruss ALf
Anscheinent gibt es jetzt ein Wettrennen zwischen DF + DP nice!
delphi10 - Mi 22.12.10 20:34
jaenicke hat folgendes geschrieben : |
Also ich frage mich echt wie du das machst, dass immer Dateien fehlen. Na gut, die .dpr war immerhin im letzten Zip drin...
Der Rest sind Tippfehler... die zeigt Delphi dir dann schon... |
ooooch, so ein zwei _richtige_ Fehler finde ich manchmal schon.... :lol:
Pataya - Mi 22.12.10 23:43
Keine Sorge , ich habe es schon selbst geschrieben.
Die Fehler kommen daher, dass ich davon wirklich überhaupt keine Ahnung habe und versucht habe, mich an das Hilfsblatt vom Lehrer zu halten ( oder eher mich daran entlang gehangelt habe ).
Ich musste das Programm ja heute abgeben und da es bei mir immer noch nicht läuft habe ich nun ein nicht laufendes Programm abgeben :/
Das seltsame war nur, dass auch der Lehrer mir nicht wirklich weiterhelfen konnte ( er hat drüber geschaut und meinte, dass es eigentlich klappen müsste ... ? ).
Ich danke euch trotzdem für eure zahlreiche Hilfe und die Mühe,die ihr euch gemacht habt um mir zu helfen (:
Danke, Danke, Danke !
Ich wünsche allen noch schöne Feiertage und einen guten Start ins neue Jahr!
glotzer - Mi 22.12.10 23:51
wie wärs dann mal damit ein paar tutorials durchzuschauen BEFOR man so was anfängt? das ist kein programieren, das ist einfach nur lachhaft
delphi10 - Do 23.12.10 01:03
Pataya hat folgendes geschrieben : |
Keine Sorge , ich habe es schon selbst geschrieben.
Die Fehler kommen daher, dass ich davon wirklich überhaupt keine Ahnung habe
Ich danke euch trotzdem für eure zahlreiche Hilfe und die Mühe,die ihr euch gemacht habt um mir zu helfen (:
Danke, Danke, Danke ! |
Zitat: |
Ich wünsche allen noch schöne Feiertage und einen guten Start ins neue Jahr! |
Danke gleichfalls. Jetzt hast du ja Zeit, dich an den Danke-Buttons auszutoben :tongue:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!