Autor Beitrag
jackie05
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Fr 14.08.09 20:10 
Hallo,
sry, ich wusste jetzt nicht wie ich den Thread nennen sollte.

Ich habe in Blitz3D ein Spiel geschrieben und möchte in Delphi 7 einen Leveleditor schreiben, ist soweit fertig und klappt auch, bis auf das laden der Map.dat Datei.

Das Problem ist, das ich in Blitz3D alle Integer Variablen über ReadInt lese und in Delphi gibt es den Befehl ReadInt im TFileStream Object nicht.

Meine Map Dateien sehen so aus:
Moderiert von user profile iconNarses: Als Text eingefügte Binärdaten gelöscht. Bitte die Datei ggfs. anhängen!

Das klappt alles Wunderbar zu laden in meinem Spiel, aber wie kann ich die Dateien in Delphi laden?

Ich arbeite mit ReadInt, ReadLine und ReadByte in Blitz3D, nur gibt es diese nicht in Delphi, ist ja klar.

Wie könnte ich ReadInt, ReadLine und ReadByte in Delphi verwenden?

Ich bedanke mich schonmal im Voraus.

MfG
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Fr 14.08.09 20:31 
Du hast grad nicht wirklich eine Binär-Datei als Text eingefügt, oder? Und dann auch noch mit Delphi-TAGs, oh man... :P Da sollte man doch schon in der Vorschau sehen, dass das keinen gibt ;) Wenn notwendig, häng die Datei bitte an.

In Delphi gibt es ja den TFileStream. Zum einen findest du darüber sicher schon einige Erklärungen hier im Forum.
Ein Byte oder einen Integer lesen könntest du mit MyFileStream.Read(MyByte, SizeOf(MyByte)); oder so ähnlich.. hab grad kein Delphi hier.
ReadLine könnte schon schwieriger werden. Wozu auch, bei einer Binärdatei..? Du könntest Byte für Byte in einem Array speichern, und bei $13 abbrechen.

_________________
PROGRAMMER: A device for converting coffee into software.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Sa 15.08.09 12:31 
Über Streams kann ich nix sagen, habe nie damit gearbeitet, aber wenn die Datei nur Integer enthält kannst du das ganz einfach mit typisierter Datei machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  datei: file of integer;
  zahl: integer;
begin
  AssignFile(datei,'dateiname');
  reset(datei);
  while not eof(datei) do
    begin
      read(datei,zahl);
    end;
  closefile(datei);
end;

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Sa 15.08.09 14:01 
Danke euch.
Also, in der Map.dat Datei steht die Position des Spielers(Int) und die Daten für die Map(Byte)

Sry, mein Spiel ist in BlitzMax geschrieben und nicht in Blitz3D, mein fehler.
Ich habe ein Map Editor in BlitzMax geschrieben und so sieht die Speicher Funktion aus:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Function MapSave()
  Local Datei:TStream = WriteFile("Map001.dat")
  WriteInt(Datei,FeldXAnzahl)
  WriteInt(Datei,FeldYAnzahl)
  WriteInt(Datei,spieler_x_feld)
  WriteInt(Datei,spieler_y_feld)
  For Local y:Int=0 To FeldYAnzahl-1
    For Local x:Int=0 To FeldXAnzahl-1
      WriteByte(Datei,Spielfeld[x,y].Wert)
    Next
  Next
  CloseFile(Datei)
End Function


nur möchte ich ein Map Editor in Delphi schreiben, was auch schon fast fertig ist, bis auf die Speicher Funktion.

Wie könnte ich das in Delphi umschreiben?

Danke schonmal.

MfG
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Sa 15.08.09 14:19 
ausblenden Delphi-Quelltext
1:
2:
MyInteger := FeldXAnzahl;
MyStream.Write(MyInteger, SizeOfMyInteger);


Sollte als Beispiel reichen?

_________________
PROGRAMMER: A device for converting coffee into software.
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Sa 15.08.09 18:36 
Danke Dir.
Das ist mir schon klar, nur wie kann ich Byte Werte Speichern?

MfG
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Sa 15.08.09 18:42 
naja, wie speicherst du die werte den in blitzbasic???

du könntest hier zum beispiel ein array verwenden.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Sa 15.08.09 21:36 
Ich beschäftige mich zurzeit mit BlitzMax und nicht mit BlitzBasic, das hatte ich auch geschrieben gehabt, da ich mich vertippt hatte.

Wie ich es in BlitzMax Speicher, hatte ich auch schon gezeigt, weiter oben.
Hier nochmal:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Function MapSave()
  Local Datei:TStream = WriteFile("Map001.dat")
  WriteInt(Datei,FeldXAnzahl)
  WriteInt(Datei,FeldYAnzahl)
  WriteInt(Datei,spieler_x_feld)
  WriteInt(Datei,spieler_y_feld)
  For Local y:Int=0 To FeldYAnzahl-1
    For Local x:Int=0 To FeldXAnzahl-1
      WriteByte(Datei,Spielfeld[x,y].Wert)
    Next
  Next
  CloseFile(Datei)
End Function


Danke schonmal.

MfG
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: So 16.08.09 07:56 
user profile iconjackie05 hat folgendes geschrieben Zum zitierten Posting springen:
Danke Dir.
Das ist mir schon klar, nur wie kann ich Byte Werte Speichern?

Äh, genau so, nur dass du statt einer Integer Variablen, eine Byte Variable nimmst?

_________________
PROGRAMMER: A device for converting coffee into software.
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: So 16.08.09 10:31 
Achso, stimmt ja. :wink:

Ich Danke Dir, nun funktioniert es.

MfG