Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Spezielle Daten aus einer Datei abfragen (https://www.delphipraxis.net/76123-spezielle-daten-aus-einer-datei-abfragen.html)

sacred 30. Aug 2006 10:29


Spezielle Daten aus einer Datei abfragen
 
Hallo,

Ich habe eine Frage bezügl. der Entwicklung eines Rollenspiels, z.Z. bin ich noch am entwickeln der Map-engine.

Die Datei einer map möchte ich in einer eigenen .a3km datei speichern.
Ich habe es mit einer normalen Datei versucht, die z.b. so aussehen sollte:

gras=103:380
gras=110:380
gras=117:380
stein=124:380

Ich weiß aber nicht, wie ich dann die ganzen Daten aus der Datei auslesen soll.
Kann mir da jemand helfen?
Also z.b. liest das Programm die erste Zeile und weil es "gras" entdeckt weiß es gleich,
aha, jetzt muss ich ein imageX createn und mit einem Grasbild versehen.
Dann sieht es die Koordinaten und sagt imageX halt zu wo es sein soll, nämlich .left:=103 und .top=380.

Ich weiß das man soetwas mit einer repeat schleife lösen kann, die dann jedesmal immer einen Buchstaben mehr abfragt, dies
ist allerdings höllisch umständlich.

danke,
moritz.

bttb930 30. Aug 2006 11:07

Re: Spezielle Daten aus einer Datei abfragen
 
na, so richtig viel scheinst du ja noch nicht zu wissen.

Schau dir mal TStringList an. Darin kannst Du solche Name-Wert-Paare wie du sie verwendest bequem verarbeiten (Stichwort Names[i] und Values[i]).

Jürgen Thomas 30. Aug 2006 11:20

Re: Spezielle Daten aus einer Datei abfragen
 
Zitat:

Zitat von bttb930
Schau dir mal TStringList an. Darin kannst Du solche Name-Wert-Paare wie du sie verwendest bequem verarbeiten (Stichwort Names[i] und Values[i]).

Genau, und das kann zu Delphi-Referenz durchsuchenTIniFile erweitert werden.

Dann musst Du nur noch Deine Kombination Left/Top auswerten; aber auch dabei kann Delphi behilflich sein (auf die Schnelle ungetestet):
Delphi-Quellcode:
procedure TForm1.ZahlenSplit(const sZeile: string; var iLeft, iTop: integer);
var sListe: TStringList;
begin
  //  Vorgabewerte
  iLeft := 0; iTop := 0;
  //  eine temporäre Stringliste verwenden
  sListe := TStringList.Create;
  try
    //  speichere Deine Zeile im Format 'gras=103,380'
    //  comma-getrennte Werte können schnell umgesetzt werden!!!
    sListe.CommaText := sZeile;
    if sListe.Count >= 2
    then begin
      //  Achtung: StrToInt knallt schnell; es gibt bessere Verfahren
      //  siehe unter 'Suchen' von DP
      iLeft := StrToInt(sListe[0]);
      iTop := StrToInt(sListe[1]);
    end;
  //  korrigiert nach dem wichtigen Hinweis #4 von Daniel G
  finally
    sListe.Free;
  end;
end;
Jürgen

Daniel G 30. Aug 2006 11:23

Re: Spezielle Daten aus einer Datei abfragen
 
Hi,

wäre es nicht besser, except durch finally zu ersetzen und dort sListe wieder frei zu geben? :gruebel:

Jürgen Thomas 30. Aug 2006 11:35

Re: Spezielle Daten aus einer Datei abfragen
 
Zitat:

Zitat von Daniel G
wäre es nicht besser, except durch finally zu ersetzen und dort sListe wieder frei zu geben? :gruebel:

Selbstverständlich, so muss es sein! Ich war zu schnell und habe mich mehr auf CommaText und die Auswertung konzentriert. Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:49 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