![]() |
AW: Facharbeit Minigame-Editor- Ladenproblem
Zuerst: benutze bitte hier im Forum nicht die "CODE" Tags, sondern die "DELPHI"-Tags (der Römerhelm), dann lässt sich der Code besser lesen
dann schreib mal in deine Render Prozedur folgendes rein:
Delphi-Quellcode:
wenn jetzt beim Testen des Programms eine Meldung mit den Worten "rCanvas ist noch nicht gesetzt" erscheint, wurde rCanvas noch nicht gesetzt.
if not assigned(rCanvas) then
showmessage('rCanvas ist noch nicht gesetzt'); rCanvas.Pen.Color := clWhite; rCanvas.Rectangle(0, 0, 720, 480); ...//was da noch so alles kommt Heißt also
Delphi-Quellcode:
hat nicht funktioniert, oder rCanvas wurde danach auf etwas anderes gesetzt.
Raster.Canvas := Self.Canvas;
|
AW: Facharbeit Minigame-Editor- Ladenproblem
Schau dir mal das Tutorial auf dieser Seite an:
![]() ![]() Das hat zwar nichts mit Delphi zu tun, aber du kannst für dein Gameaufbau sehr viel lernen. |
AW: Facharbeit Minigame-Editor- Ladenproblem
Hallo,
werden denn Warnungen beim Compilieren angezeigt ? Ist es Absicht, dass du 2 Raster-Objekte hast, einmal in TForm1, einmal global ? Heiko |
AW: Facharbeit Minigame-Editor- Ladenproblem
Deine Objekte brauchen kein Canvas-Property.
Der Canvas wird nur beim Rendern benötigt, übergib den dort als Parameter.
Delphi-Quellcode:
Diese Namensähnlichkeit ruft geradezu nach Fehlern.
type TObjekt = class(TObject)
Delphi-Quellcode:
So werden keine Objekte sondern nur Zeiger auf diese gespeichert.
Blockwrite(Datei, Datenarray, Max);
{...} Entsprechend werden dann auch nur ungültige Zeiger geladen. Das Speichern und Laden von Objekten ist deutlich komplexer. Sie dir dazu die Klassen TPersistent, TWriter, TReader und eventuell TComponent genauer an. |
AW: Facharbeit Minigame-Editor- Ladenproblem
hat sich inzwischen erledigt, habs gelöst
-close- |
AW: Facharbeit Minigame-Editor- Ladenproblem
Vielleicht wäre deine Lösung auch für andere interessant
|
AW: Facharbeit Minigame-Editor- Ladenproblem
erstmal sorry, iwie hab ich keine mails mehr bekommen, obwohl hier noch welche geposted haben, und dooferweise hab ich die zweite seite nicht gesehen...^^
hab nach nochmaligem unterhalten mit meinem lehrer die speicher procedure so erledigt:
Delphi-Quellcode:
procedure TForm1.Speichern;
var i: integer; Datensatz : Datentyp; begin if SaveDialog.Execute then begin LeftLeft; //unwichtige nebenprocedure assignfile(Datei, SaveDialog.FileName); rewrite(Datei); for i := 1 to Max do begin Datensatz := DatWelt(Welt[i]); //siehe nächstem code write(Datei,Datensatz); end; closefile(Datei); BtStart.Visible := true; end; end;
Delphi-Quellcode:
und die laden procedure dementsprechend so:
function DatWelt(pObjekt: TObjekt): Datentyp;
begin result.Typ := pObjekt.Typ; result.Nummer := pObjekt.Nummer; result.StartX := pObjekt.StartX; result.StartY := pObjekt.StartY; end;
Delphi-Quellcode:
somit werden jetzt genau die richtigen daten gespeichert und geladen.
procedure TForm1.Laden1Click(Sender: TObject);
var i: integer; Datensatz : Datentyp; begin if MessageDlg('Wollen sie vorher speichern?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then Speichern; if OpenDialog.Execute then begin assignfile(Datei, OpenDialog.FileName); reset(Datei); i := 0; NummerAktuell := 0; while not eof(Datei) do begin i := i+1; NummerAktuell := NummerAktuell+1; read(Datei, Datensatz); Welt[i].reset(Datensatz.Typ, Datensatz.Nummer, Datensatz.StartX, Datensatz.StartY); end; closefile(Datei); Raster.Render; BtStart.Visible := true; end; end; denn was ich nicht wusste war, dass ich vorher sozusagen versucht habe, die kompletten objekte zu speichern und das ging ja, wie schon von blup geschrieben, deutlich schwieriger... danke trotzdem nochmal an alle und sorry für meine unbeholfenheit... |
AW: Facharbeit Minigame-Editor- Ladenproblem
Zitat:
|
AW: Facharbeit Minigame-Editor- Ladenproblem
Zitat:
möchte jetzt auch das ganze auf ein Bild zeichnen lassen, und dann das Bild auf der Form neu zeichnen lassen, damit das flackern weggeht. allerdings hab ich gelesen, dass das gleiche mit doublebuffered := true auch umgangen werden kann, weil das genau das bezweckt. bei mir flackerts allerdings immernoch... hat irgendwer ne ahnung, warum? |
AW: Facharbeit Minigame-Editor- Ladenproblem
Code wofür? Für einen Parameter vom Typ TCanvas? Bitteschön:
Delphi-Quellcode:
Als Parameter kannst Du nun die Zeichenfläche angeben, auf die gezeichnet werden soll.
procedure PaintEllipse(const DestCanvas: TCanvas);
begin if Assigned(DestCanvas) then begin DestCanvas.Brush.Color := clYellow; DestCanvas.Ellipse(0,0,100,100); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz