Entwickler-Ecke

Dateizugriff - Zahlen auslesen...


Ulixes - Fr 24.10.08 13:15
Titel: Zahlen auslesen...
Hey!!

Ich möchte Zahlen aus einer 2,5 MB großen Textdatei auslesen...

Könnte mir jemand erlären, wie das geht??(bin Anfänger)

Danke im Vorraus!!


Xentar - Fr 24.10.08 14:00

In welchem Format liegen die Zahlen vor?
Sind diese einfach untereinander geschrieben, mit komma getrennt, oder wie oder was?
Und was heißt für dich "auslesen"? Sollen diese in der Software angezeigt werden? TMemo davon die Methode Lines.LoadFromFile
Sollen Sie sonst irgendwie weiter verarbeitet werden?

Brauchen Input...


jaenicke - Fr 24.10.08 14:02

Und was meinst du mit auslesen? Wohin?
(Weiterverarbeiten, einfach nur die Datei anzeigen, Zahlen aus weiteren Daten extrahieren und anzeigen, ...)


Ulixes - Fr 24.10.08 20:28

Die Zahlen liegen als Textdatei und untereinander geschrieben vor.

Des Weiteren sollen die Zahlen in einer TChart-Komponente verarbeitet werden.


jaenicke - Mo 27.10.08 12:07

Das reine Auslesen sähe dann zum Beispiel so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  AssignFile(Datei, ...);
  Reset(Datei);
  while noch Eof(Datei) do
  begin
    ReadLn(Datei, IntVariable);
    // Hier muss die Variable dann verarbeitet werden
  end;
  CloseFile(Datei);
Die TChart-Komponente kenne ich nur vom Namen her, wie du dort etwas einträgst weiß ich nicht. Aber derart viele Werte werden wohl einige Geduld erfordern...

Literatur:
http://www.delphibasics.co.uk/RTL.asp?Name=AssignFile
http://www.delphibasics.co.uk/RTL.asp?Name=Reset
http://www.delphibasics.co.uk/RTL.asp?Name=ReadLn
http://www.delphibasics.co.uk/RTL.asp?Name=CloseFile


Ulixes - So 02.11.08 15:21

Bei mir kommt jetzt noch !nach! der Compilierung die Fehlermeldung("Benachrichtigung über Debugger-Exception"), dass eine Exception der Klasse EinOutError mit der Meldung ungültige numerische Eingabe aufgetreten ist.

Die Zahlen liegen so in der Textdatei vor:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
...
5978
5901
5933
5946
5910
5895
5889
...


Mein bisheriger Quellcode:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure einlesen ();                                 // Daten einlesen
var einlesen: TextFile;
    k: integer;
begin
  AssignFile(einlesen,'C:\...' );
  Reset(einlesen);
  while not Eof(einlesen) do
  begin
    ReadLn(einlesen, k);
    form4.series1.add (k);
  end;
  CloseFile(einlesen);
end;


Xentar - So 02.11.08 16:53

Deklarier k mal als String, statt integer.


Ulixes - Di 04.11.08 17:44

Gibt es die Möglichkeit/Befehl Zeile einzeln auszulesen??

Quasi eine Nummerierung...


Ulixes - Sa 08.11.08 23:07

Kann sich nochmal jemand meinen Thread anschauen??


Delete - So 09.11.08 01:04

Hab ich getan, aber die Frage nicht verstanden :gruebel:


jaenicke - So 09.11.08 01:17

Naja, ich frage mich weniger ob ich die Frage richtig verstehe sondern eher wo das Problem ist. :nixweiss:

Du liest die doch einzeln zeilenweise aus. Und wenn du die Zeilennummer haben willst, dann musst du ja nur eine Integervariable vorher auf 0 setzen und bei jedem Zeilendurchlauf um eins hochzählen.


Ulixes - Mo 10.11.08 20:35

Naja ich habe doch aber keine Integervariable mehr...(die habe ich als String definiert)

Zudem liest er doch solange aus bis die Datei zu Ende ist.


Boldar - Mo 10.11.08 21:03

Dann deklarier halt ne neue Integer und zählke in der Schleife hoch!!!!


Ulixes - Sa 15.11.08 11:13

Nee, sorry!

Ich habe mein problem falsch geschildert!!

Hab aber schon die Lösung...


Trotzdem VIELEN DANK

Das Forum ist echt genial!