Autor Beitrag
Max Payne
Hält's aus hier
Beiträge: 11

Win XP
D3.0 Prof
BeitragVerfasst: Do 14.07.05 16:50 
Hi
Mein erstes Topic :wave:

Also ich hab Ferien und langeweile also hab ich mir vorgenommen eine Art Editor (z.B. Szenarioeditor) für ein Spiel zu schreiben. Dazu muss ich aus einer Datei lesen. Das Format ist:
Gebietsnummer;Name;bla;...;bla;X
Gebietsnummer;Name;bla;...;bla;X usw
Wie man sieht immer mit ";" als Trennzeichen und "X" als zeilenende. Ich will nun den Namen und die Nummer laden und da irgendetwas mit machen z.B. in ein Memofeld schreiben (ich bin mir noch nicht sicher was und wie überhaupt das ganze aussehen soll).

Das hab ich mir bisher gedacht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.FormCreate(Sender: TObject);
var
   F1: Textfile;
   V1: Char;
   Test: String;
begin
 Test := '';
 AssignFile(F1, 'D:\Test.txt');
 ReSet(F1);
 while not Eof(F1) do
 begin
  Read(F1, V1);
  if V1 = ';' then
  begin
   if Test <> '' then Memo1.Lines.Add(Test);
   Test := '';
  end
  else Test := Test + V1;
 end;
 Form1.Caption := Test;
end;


Funktioniert auch soweit, nur lese ich halt alle Felderund wie gesagt will ich nur die ersten beiden haben. Weiß jemand Rat?

Vielen Dank.
ScorpionKing
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1150

Win XP

BeitragVerfasst: Do 14.07.05 16:54 
Mach doch folgendes:

ausblenden Delphi-Quelltext
1:
neu := copy(s,0,5);					


neu ist der neue String, s der alte Inhalt, 0 der Index, und 5 die Anzahl der Zeichen, die du kopieren willst!

_________________
Aus dem Urlaub zurück!
Max Payne Threadstarter
Hält's aus hier
Beiträge: 11

Win XP
D3.0 Prof
BeitragVerfasst: Do 14.07.05 17:05 
Copy kenn ich aber mir ist nicht ganz klar wie ich das einsetzen soll...

Ich gehe mal davon aus du hast das Problem nicht richtig verstanden (sorry falls dem nicht so ist und ich nur zu blöd bin).

Also auszug aus der Datei:

PROV18;Calais;Calais;Calais;Calais;Calais;Calais;;;;;X
PROV19;London;London;London;London;London;London;;;;;X
PROV20;Dover;Dover;Dover;Dover;Dover;Dover;;;;;X

Ich will jetzt die Datei so lesen das im Memofeld steht:

PROV18
Calais
PROV19
London
PROV20
Dover

Also nur die ersten beiden Daten.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 14.07.05 17:07 
dafür gibts die schöne prozedur explode, die dir den string in ein array aufspaltet (; als trenner)
ausblenden 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:
function Explode(text: string; seperator: Char): tarray;
var 
  s: string
  m: Integer; 
  c: Char; 
begin
  Result := nil
  s := ''
  for m := 1 to Length(text) do 
  begin
    c := text[m]; 
    if c = seperator then 
    begin 
      SetLength(Result, Length(Result) + 1);
      Result[Length(Result) - 1] := s;
      s := ''
    end 
    else 
      s := s + c; 
  end;
  if s <> '' then 
  begin 
    SetLength(Result, Length(Result) + 1); 
    Result[Length(Result) - 1] := s; 
  end
end;

anwendung:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
type tarray = array of string;
var t: tarray;
begin
  t:=explode('bla;blubb',';');
  showmessage(t[0]);
end;

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Max Payne Threadstarter
Hält's aus hier
Beiträge: 11

Win XP
D3.0 Prof
BeitragVerfasst: Do 14.07.05 18:11 
Danke retnyg

Auch wenn ich nicht im Stande war die funktion und den Typ so einzubinden habe ich mir das Prinzip abgeschaut und so hingebastelt das es für mich passt. :wink: