AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Textdatei auslesen und Einträge in Arrays speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei auslesen und Einträge in Arrays speichern

Ein Thema von Koffein Schluck · begonnen am 6. Okt 2006 · letzter Beitrag vom 9. Okt 2006
Antwort Antwort
Koffein Schluck

Registriert seit: 27. Sep 2006
Ort: Frankfurt am Main
3 Beiträge
 
Delphi 6 Professional
 
#1

Textdatei auslesen und Einträge in Arrays speichern

  Alt 6. Okt 2006, 19:24
Ich will, dass mein Programm Daten für Arrays aus einer Textdatei laden kann. Dazu hab ich mir folgende Codierung der Textdatei ausgedacht:

Zitat:
Frankfurt, Berlin, München, Oslo, New York, Mainz, Sydney


Frankfurt nach Berlin
Berlin nach Sydney
München nach Mainz
Oslo nach München
Nicht besonders einfallsreich Wenn man es anders codieren sollte... kein Problem, bitte sagen xD

Das ist jetzt nur ein Beispiel, es können viel mehr Einträge vorhanden sein. Jedoch wird die Datei nie über 10 Städtenamen aufweisen. Jetzt möchte ich, dass in meinem Programm diese Datei geöffnet und ausgelesen wird. Die Städtenamen sollen in einer TList untereinander erscheinen und die Regeln in einer anderen TList und zusätlich in einem zwei dimensionalem Array, wobei das Array für die Regeln ein "Byte" Array ist und somit nur Zahlen speichern soll. Damit es nicht so trocken ist ein Beispiel:
Die Datei wird ausgelesen
Die erste TList1 wird erstellt mit den Einträgen:

Zitat:
Frankfurt
Berlin
München
Oslo
New York
Mainz
Sydney
Die zweite TList wird erstellt: Man fügt ihr ein Item zu, nämlich "Frankfurt nach Berlin" jetzt wird überprüft, welche Position Frankfurt in der TList1 aufweist, in unserem Beispiel - 0. Jetzt soll diese Position in den ersten Eintrag des Arrays Regeln gespeichert werden: Regeln[0,0] := 0; so, jetzt wird die Position von Berlin in den erste Zeile aber 2 Spalte des Arrays Regeln gespeicher. Regeln[0,1] := 1. Das wird dann Regel für Regel gemacht somit ergibt sich zum Schluss ein Array Regeln mit den folgenden Einträgen:
Regeln = ( ( 0 , 1 ) , ( 1 , 6 ) , ( 2 , 5 ) , ( 3 , 2 ) ); und eine TList:
Delphi-Quellcode:
Frankfurt nach Berlin
Berlin nach Sydney
München nach Mainz
Oslo nach München
Wie realisiere ich das? Ist das möglich? Ich hab mir im Forum so einiges angeguckt, aber die Fälle über die ich gelesen habe, waren sehr komplex und es kam mir so vor, als ob man mein Problem einfacher lösen könnte.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Textdatei auslesen und Einträge in Arrays speichern

  Alt 6. Okt 2006, 19:57
Herzlich willkommen in der Delphi-PRAXiS, Koffein Schluck.

Wenn jede Stadt Teil mindestens einer Regel ist, dann ist die Vorgabe einer Städteliste überflüssig. Ich würde dann die Regeln als Städtepaare formulieren, wobei ich das Literal ' nach ' durch ein Symbol ersetzen würde. Dadurch kann ich die Regeln mit der Methode LoadFromFile() einer TStringList laden und mit den Eigenschaften Names[], Values[] und NameValueSeparator verarbeiten. In einer zweiten (sortierten) StringList füge ich alle Städtenamen einmal hinzu und erhalte durch den Index der Stadt in dieser Liste den benötigten Schlüssel. In einem Durchgang kann ich so die Schlüsselpaare in das zweidimensionale Regel-Array übertragen.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Koffein Schluck

Registriert seit: 27. Sep 2006
Ort: Frankfurt am Main
3 Beiträge
 
Delphi 6 Professional
 
#3

Re: Textdatei auslesen und Einträge in Arrays speichern

  Alt 8. Okt 2006, 17:46
Nicht jede Stadt bekommt eine Regel. Die Idee das nach mit einem Zeichen zu ersetzten ist gut, welches Zeichen eignet sich dazu am besten? Wie lese ich den ASCII Code eines Zeichens in einer Textdatei zum Beispiel ist der Code 0134 für dieses Zeichen "†" verantwortlich, lese ich einfach die Zeichen Variable (Typ Char) als Integer aus? Wär jemand so toll und kann mir vielleicht ein Code schreiben, ich musste bis jetzt nie Dateien auslesen... Ich lese mir noch ein paar Tutorials durch... Aber jetzt sitze ich in einem Internetcafe, also muss ich das auf später verschieben.

Danke für die Aufnahme im Forum xD , war bis jetzt nur ein "Leser" hab mich erst kürzlich dazu entschlossen mich anzumelden. Mir gefällts hier sehr gut!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Textdatei auslesen und Einträge in Arrays speichern

  Alt 8. Okt 2006, 20:02
Zitat von Koffein Schluck:
Nicht jede Stadt bekommt eine Regel.
Auch kein Beinbruch.

Zitat von Koffein Schluck:
Die Idee das nach mit einem Zeichen zu ersetzten ist gut, welches Zeichen eignet sich dazu am besten?
Ich würde ein Gleichheitszeichen nehmen - weil ich dann auf die eingebauten Fähigkeiten bestimmter Komponenten zurückgreifen kann.

Zitat von Koffein Schluck:
Wie lese ich den ASCII Code eines Zeichens in einer Textdatei zum Beispiel ist der Code 0134 für dieses Zeichen "†" verantwortlich, lese ich einfach die Zeichen Variable (Typ Char) als Integer aus?
Du musst dazu die Datei nicht zeichenweise verarbeiten, auch für jedes Zeichen in einem String kannst du mit Ord(s[i]) den Code-Wert ermitteln.

Zitat von Koffein Schluck:
Wär jemand so toll und kann mir vielleicht ein Code schreiben, ich musste bis jetzt nie Dateien auslesen...
Ausnahmsweise - im Anhang.

Freundliche Grüße
Angehängte Dateien
Dateityp: zip regeln_102.zip (2,4 KB, 18x aufgerufen)
  Mit Zitat antworten Zitat
Koffein Schluck

Registriert seit: 27. Sep 2006
Ort: Frankfurt am Main
3 Beiträge
 
Delphi 6 Professional
 
#5

Re: Textdatei auslesen und Einträge in Arrays speichern

  Alt 9. Okt 2006, 17:59
VIELEN DANK! Wusste gar nicht wie effizient man sowas gestalten kann! Großartiger Programmierstil! Hut ab!
Für alle, die ähnliche Inhalte auslesen wollen ist das Herunterladen der Demo sehr zu empfehlen!
Hatte beim compilieren Probleme mit dem Befehl [i]FRules[i][True] := NameToKey(ValueFromIndex[i]);[/i] mein Delphi 6 hat den Befehl "ValueFromIndex" nicht gekannt, hab die Zeile als Kommentar markiert, dann lief das Programm.




Ich weiß noch nicht was diese Zeilen genau im Code bewirken:
Delphi-Quellcode:
FRules[i][False] := NameToKey(Names[i]);
FRules[i][True] := NameToKey(ValueFromIndex[i]);
Weiß noch nicht was der Befehl ValueFromIndex[i] als Rückgabewert liefert, mein Delphi 6 kennt den Befehl noch nicht und hab bis jetzt noch nie Boolean Arrays gesehen : Wie kann ich denn auf FRules[i][False] etwas speichern und vor allem was speicher ich drauf ?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Textdatei auslesen und Einträge in Arrays speichern

  Alt 9. Okt 2006, 20:50
Hi,

Zitat von Koffein Schluck:
VIELEN DANK!
keine Ursache, das war Mitgliederwerbung. Wenn du jetzt 10 Jahre in der DP bleibst, dann backen die anderen mir einen Rührkuchen.

Zitat von Koffein Schluck:
... mein Delphi 6 hat den Befehl "ValueFromIndex" nicht gekannt, hab die Zeile als Kommentar markiert, dann lief das Programm.
Du solltest [i]ValueFromIndex durch [i]Values[Names] ersetzen, wenn TStrings unter D6 diese Methode noch nicht kennt.

Zitat von Koffein Schluck:
hab bis jetzt noch nie Boolean Arrays gesehen
In meinem Code hast du aber auch kein array of Boolean gesehen - oder? Wahrscheinlich kommt dir array [Boolean] of Integer spanisch vor, aber das ist nichts anderes als array [0..1] of Integer - bloß, dass im einen Fall True und False als Indexwerte verwendet werden, im anderen 0 und 1. Gespeichert werden aber bei meinem Beispiel Werte des Basistyps (Integer) und nicht des Indextyps (Boolean).

Gute Nacht

marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:32 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