![]() |
savedialog Datentyp
Moin
Ich hab mir da son Dame Spiel programmiert, alle 24 Steine in ein Array gespeichert und jetzt möchte ich im laufenden Spiel dem Nutzer die Möglichkeit geben, dass er zum 1. Das Spiel speichern kann und 2. Ein Spiel öffnen kann. Dazu habe ich dann folgendes geschrieben.
Delphi-Quellcode:
procedure TForm1.dateiErstellen; begin AssignFile(datei, verz); ReWrite(datei); CloseFile(datei); end; procedure TForm1.dateiOeffnen; begin AssignFile(datei, verz); reset(datei); read(datei, tw); CloseFile(datei); end; procedure TForm1.dateiSpeichern; begin AssignFile(datei, verz); reset(datei); write(datei,tw); CloseFile(datei); end; procedure TForm1.SpielSpeichern1Click(Sender: TObject); begin if savedialog1.Execute = true then begin verz := savedialog1.FileName; try dateispeichern except dateiErstellen; dateiSpeichern; end; end; end; procedure TForm1.Spieloeffnen1Click(Sender: TObject); begin if opendialog1.Execute = true then begin verz := opendialog1.FileName; try dateiOeffnen except showmessage('Datei nicht vorhanden'); end; end; end; end. Oben bei den variablen habe ich 2: Variablen genommen und denen ein Recordtyp zugewissen.
Delphi-Quellcode:
var
tw : TTempFigurenPropertys; datei: file of TTempFigurenPropertys; Meine Frage jetzt: Wenn ich jetzt auf meine Buttons klicke um zugriff zu Speichern und Öffnen zu bekommen. Bekomme ich kein Datentyp hin um Sie wirklich sicher zu Speichern, noch Schlimmer mein Projekt bleibt hängen bzw bricht ab. Ich kann das also noch nicht vollständig nutzen. Hat da jemand eine Idee? |
Re: savedialog Datentyp
1. if savedialog1.Execute = true denn es ist schon ein Boolean
2. Übergebe die datei als Parameter
Delphi-Quellcode:
procedure TForm1.dateiSpeichern( FileName: string);
Delphi-Quellcode:
try dateispeichern( savedialog1.FileName) ...
|
Re: savedialog Datentyp
Delphi-Quellcode:
:gruebel:
try dateispeichern except dateiErstellen; dateiSpeichern;
ist das nicht besser?
Delphi-Quellcode:
procedure TForm1.dateiSpeichern(datei : String);
begin AssignFile(datei, verz); {$I-} if FileExits(datei) then reset(datei) else rewrite(datei); {$I-} if IOResult = 0 then write(datei,tw) else raise // Eigene oder Standard Exception CloseFile(datei); end; |
Re: savedialog Datentyp
Zitat:
|
Re: savedialog Datentyp
FileExists, da fehlt ein s, es heißt ja auch "to exist". ;-)
|
Re: savedialog Datentyp
Delphi-Quellcode:
Ich habe da noch ein paar Fragen zu diesen Zeilen.
procedure TForm1.dateiSpeichern(datei : String);
begin AssignFile(datei, verz); if FileExists(datei) then reset(datei) else rewrite(datei); if IOResult = 0 then write(datei,tw) else raise CloseFile(datei); end; Ich bekomme da einige Fehler Meldungen womit ich nicht ganz umgehen kann, bin noch neu in der Delphi szene. [Error] StoffersUnit1.pas(231): Incompatible types [Error] StoffersUnit1.pas(234): Incompatible types [Error] StoffersUnit1.pas(236): Incompatible types [Error] StoffersUnit1.pas(239): Illegal type in Write/Writeln statement [Error] StoffersUnit1.pas(241): Incompatible types [Error] StoffersUnit1.pas(257): Not enough actual parameters [Error] StoffersUnit1.pas(257): Not enough actual parameters |
Re: savedialog Datentyp
Delphi-Quellcode:
datei ist ja deine Dateivariable, das muss da verz heißen.
procedure TForm1.DateiSpeichern(verz: String);
|
Re: savedialog Datentyp
Delphi-Quellcode:
procedure TForm1.SpielSpeichern1Click(FileName: string);
begin if savedialog1.Execute = true then begin verz := savedialog1.FileName; try DateiSpeichern except dateiErstellen; DateiSpeichern; //Fehler end; end; end; Ich weiß nicht warum, im Grunde müsste es laufen aber dennoch zeigt er mir Fehler an. [Error] StoffersUnit1.pas(229): Not enough actual parameters [Error] StoffersUnit1.pas(229): Not enough actual parameters
Delphi-Quellcode:
[Error] StoffersUnit1.pas(249): Incompatible types: 'String' and 'Text'
procedure TForm1.DateiSpeichern(verz: String);
begin AssignFile(datei, verz); if FileExists(datei) then // Fehler reset(datei) else rewrite(datei); if IOResult = 0 then write(datei,tw) else raise CloseFile(datei); end; Ich weiß ich bin jetzt ein wenig Nervig aber ich würde das gerne hin bekommen. |
Re: savedialog Datentyp
Delphi-Quellcode:
procedure TForm1.SpielSpeichern1Click(FileName: string); // wozu der Parameter FileName?
begin if SaveDialog1.Execute then DateiSpeichern(SaveDialog1.FileName); end;
Delphi-Quellcode:
...
if FileExists(verz) then ... |
Re: savedialog Datentyp
Delphi-Quellcode:
Nur noch ein Fehler
procedure TForm1.DateiSpeichern(verz: String);
begin AssignFile(datei, verz); if FileExists(verz) then reset(datei) else rewrite(datei); if IOResult = 0 then write(datei,tw) else raise CloseFile(datei); // Fehler end; [Error] StoffersUnit1.pas(257): Class type required Was genau bedeutet diese Zeile? |
Re: savedialog Datentyp
Raise Exception.Create( 'Fehler' );
MfG |
Re: savedialog Datentyp
hm? Jetzt kann ich nicht mehr Speichern^^
Delphi-Quellcode:
procedure TForm1.DateiSpeichern(verz: String);
begin AssignFile(datei, verz); if FileExists(verz) then reset(datei) else rewrite(datei); if IOResult = 0 then write(datei,tw) else Raise Exception.Create ( 'Fehler' ); end;
Delphi-Quellcode:
procedure TForm1.SpielSpeichern1Click(Sender:TObject);
begin if savedialog1.Execute then begin if SaveDialog1.Execute then DateiSpeichern(SaveDialog1.FileName); end; end; Jetzt kommt gar nicht mehr, vorhin kam immerhin noch das Fenster mit den Ordnern zum abspeichern der Datei, dabei hatte mich dann nur gestört das ich kein Datentyp erzeugen konnte und somit meine Datei nutzlos war. |
Re: savedialog Datentyp
Wieso hast du das SaveDialog.Execute doppelt drin?!
|
Re: savedialog Datentyp
Warum hast du CloseFile weggelöscht ?
Was macht denn CloseFile ? ;) |
Re: savedialog Datentyp
Weiß ich nicht, kam mit der Zeit, als ich diese Frage hier ins Form stellte hatte ich es noch nicht doppelt :)
Delphi-Quellcode:
Und wenn ich das so mache kommen Fehler..
procedure TForm1.SpielSpeichern1Click(Sender:TObject);
begin if SaveDialog1.Execute then DateiSpeichern(SaveDialog1.FileName); try DateiSpeichern except dateiErstellen; DateiSpeichern; // Fehler end; end; end; [Error] StoffersUnit1.pas(229): Not enough actual parameters File ist anderes Wort für Datei CloseFile schließt dann sozusagen die Datei? |
Re: savedialog Datentyp
und somit wäre die datei gespeichert
|
Re: savedialog Datentyp
Dein Problem scheint zu sein, dass du die Antworten hier abpinselst ohne sie zu verstehen.
Delphi-Quellcode:
Und die Abfage, ob die Datei schon existiert, würde ich mit
procedure TForm1.SpielSpeichern1Click(Sender:TObject);
begin if SaveDialog1.Execute then DateiSpeichern(SaveDialog1.FileName); end;
Delphi-Quellcode:
machen.
if not FileExists()
Da andere wäre wie Fahren nach Gehör ( Gas bis es einen Schlag lääst und dann Wenden) |
Re: savedialog Datentyp
Das Stimmt, einige Zeile verstehe ich zwar aber das große und ganze dahinter noch nicht. Ich muss mich damit genauer auseinander setzen. Ich Versuche jetzt Mal alle Beiträge die hier Abgegeben wurden sind zusammen zu fügen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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