WinFuture-Forum.de: [delphi] Problem Mit Datei In Array Laden Und Dann Bearbeiten - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[delphi] Problem Mit Datei In Array Laden Und Dann Bearbeiten


#1 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 14. April 2009 - 12:28

Hallo zusammen,
Wie kann ich eine Textdatei der Form

(Personalnummer, Auftragsnummer, Positionsnummer, Stundenanzahl, Datum)
1003, 100005, 5, 3, 11.04.2009
1001, 100001,1, 2.5, 13.04.2009

in ein mehrdimensionales Array einlesen, dass ich dann genau die Zeilen auslesen kann mit der Stundenanzahl, wo die bestimmte Personalnummer zum beispiel ist?

Im Type Teil hab ich das:
type
  TStunden = record
	Pnr: string[4];
	Auftragnr: string[6];
	Positionnr: string[2];
	Stunden: string[4];
	DatumJahr: string[4];
	DatumMonat: string[2];
	DatumTag: string[2];
  end;

//...

  public
	{ Public-Deklarationen }
	Record1: TStunden;
	List: array of TStunden;
  end;


So hab ich des jetzt mal versucht. Nun will ich eben in die TStunden die Datei Stunden.txt laden.
Hab ich da schon falsch angefangen?
Wie benutz ich nacher das array?
Habe noch was von Records gelesen, die man da auch irgendwie benutzen kann?
Will halt eben nacher bestimmte Zeilen bearbeiten, löschen und auch neue hinzufügen können.
Hab mit so etwas noch nicht gearbeitet.

Wäre nett wenn mit einer helfen könnte.

Grüße Dennis

Dieser Beitrag wurde von Dyon bearbeitet: 14. April 2009 - 12:36

0

Anzeige



#2 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 14. April 2009 - 15:55

Also ich habe es jetzt soweit
//...
  private
	{ Private-Deklarationen }
	procedure StundenDateiLaden;
  public
	{ Public-Deklarationen }
  end;

var
	Form1: TForm1;
	RecordStunden: TStunden;
	ListStunden: array of TStunden;
	iStunden: integer;
	fStunden: file of TStunden;

implementation
//...


und
procedure TForm1.StundenDateiLaden;
begin
showmessage('1');
  assignfile(fStunden,ExtractFilePath(ParamStr(0)) + 'dat/Stunden.dat');
	  reset(fStunden);
	  showmessage('2');
			for iStunden := Low(ListStunden) to High(ListStunden)
			 do begin
			 showmessage('3');
			  Read(fStunden,ListStunden[iStunden]);
			  showmessage('4');
			  end;
		closefile(fStunden);
		showmessage('5');
end;


Wenn ich nun diese Prozedur ausführe erscheinen die messageboxen 1, 2 und 5. Die Schleife wird also nicht ausgeführt.
Wo liegt der Fehler?
0

#3 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 16. April 2009 - 15:27

OK
Ich habs so einigermaßen hingekriegt
0

#4 Mitglied ist offline   deezee 

  • Gruppe: aktive Mitglieder
  • Beiträge: 119
  • Beigetreten: 05. Februar 09
  • Reputation: 0

geschrieben 19. April 2009 - 12:28

cool das du hinbekommen hast könntest du den quelltext posten oder per pn schiken fänd ich mal interressant
0

#5 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 21. April 2009 - 16:12

Hier:
//...
type
  TStunden = record
	Pnr: string[4];
	Auftragnr:string[6];
	Positionnr: string[2];
	Stunden: string[4];
	DatumJahr: string[4];
	DatumMonat: string[2];
	DatumTag: string[2];
  end;
//...

	//eigene Prozeduren
	procedure StundenDateiLaden;
	procedure StundenDateiSpeichern;
var
	Form1: TForm1;
	//Variablen für eigene Prozeduren
	//List
	ListStunden: array of TStunden;
	//Record
	RecordStunden: TStunden;

//...
procedure StundenDateiLaden;//aus datei in array laden
var Current:integer;
f:file of TStunden;
begin
  assignfile(f,ExtractFilePath(ParamStr(0)) +'dat/Stunden.dat');
	  reset(f);
	  SetLength(ListStunden,FileSize(f));
	  Current:=0;
	  while not eof(f) do
		begin
		  read(f,ListStunden[Current]);
		  inc(Current);
		end;
		closefile(f);
end;

procedure StundenDateiSpeichern;//aus array in datei laden
var Current:integer;
f:file of TStunden;
begin
  assignfile(f,ExtractFilePath(ParamStr(0)) +'dat/Stunden.dat');
	  rewrite(f);
		if low(ListStunden) <> -1
		  then begin
			for current:= 0 to High(ListStunden)
			do write(f,ListStunden[current]);
		  end;
		closefile(f);
end;

//...
procedure TForm3.BtanlegenClick(Sender: TObject);//daten bei Click an array anfügen
begin
  SetLength(ListStunden,Length(ListStunden)+1);
  RecordStunden.Pnr:= '1001';
  RecordStunden.Auftragnr:= '100001';
  ListStunden[High(ListStunden)]:=RecordStunden;
  StundenDateiSpeichern;
end;
//...


Das müsste es eigentlich soweit gewesen sein:-)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0