Entwickler-Ecke
Dateizugriff - Daten aus Textdatei in Variablen auslesen
bfelix - Mo 31.01.11 19:01
Titel: Daten aus Textdatei in Variablen auslesen
Hallo Community,
ich würde gerne Daten zur besseren Flexibilität eines Programms aus einer sauber gegliederten csv-datei o.ä. auslesen und dann in Arrays Speichern.
Danke schon im Voraus,
Felix
elundril - Mo 31.01.11 19:04
Mhm, das ist schön. tu nur, wir haben nichts dagegen. :mrgreen:
Was ich damit sagen will ist: Was ist konkret deine Frage, wo ist das Problem, wie sieht dein Ansatz dafür aus, was hast du durch Recherche im Internet rausgefunden?
lg elundril
bfelix - Mo 31.01.11 19:07
also gut... :roll:
wie kann ich die Datei auslesen und sie strukturiert in Variablen benutzen
Regan - Mo 31.01.11 19:08
In dem du die Datei mit einer Stringlist lädst, dann Zeile für Zeile durchgehst und die Werte speicherst. Du bekommst die einzelnen Element z. B. mit Pos heraus.
bfelix - Mo 31.01.11 19:10
nd wie sähe der code dazu ungefähr aus? ich kenn diese Befehle überhaupt nicht.
mfg
bfelix
elundril - Mo 31.01.11 19:11
bzw kann man auch delimiter und so dazu verwenden wenn man eh schon eine Stringlist verwendet.
Wie man das anwendet erfährst du am besten über die Hilfe (F1 in Delphi) oder über Google. ;) BZW, kannst du auch in der Forensuche sicher einiges dazu finden.
lg elundril
bummi - Mo 31.01.11 19:23
Vorschlag zum Einstieg
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: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58:
| unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TMyArray=Array of Array of String; TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private FMyArray: TMyArray; public end;
var Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject); Var SL, ZSL:TStringList; i:Integer; Procedure FillRow; var ii:Integer; begin ZSL.Text := SL[i]; ZSL.Delimiter := ';'; SetLength(FMyArray[i], ZSL.Count); for ii := 0 to ZSL.Count - 1 do FMyArray[i][ii] := ZSL[ii];
end; begin SL:=TStringList.Create; ZSL:=TStringList.Create; try SL.LoadFromFile('C:\temp\test.csv'); SetLength(FMyArray, SL.Count); for i := 0 to SL.Count - 1 do begin FillRow; end; finally SL.Free; ZSL.Free; end; end;
end. |
bfelix - Mo 31.01.11 21:39
sind typisierte dateien im programm verankert oder extern?
gnomecoder - Mo 31.01.11 21:52
Extern, nur kannse die nicht einfach mim texteditor öffnen und Werte ändern, und darauf kams dir doch an wenn ich dich richtig verstanden habe.
bfelix - Mo 31.01.11 22:00
es muss nicht unbedingt ein texteditor sein, ich kann mir ja auch selbst einfach eine kleine software schreiben, die das übernimmt. danke für den tipp. Aber eine frage:
Definiert man einfach einen variablentyp als record, deklariert dann ein variable in diesem Typ und erstellt diese dann als datei oder habe ich da was falsch verstanden?
elundril - Di 01.02.11 04:19
Jain. Deine Formulierung ist ein bisschen zu vage. Wie genau typisierte Dateien aufgebaut sind, kannst du
hier [
http://www.delphi-treff.de/tutorials/datenspeicherung/typisierte-dateien/einleitung/] nachlesen.
Aber soviel gleich mal vorweg, typisierte Dateien <> CVS-Dateien. Wenn du in deinem Record 5 Stringvariablen mit der Länge 150 deklariert hast, dann kannst du Pro Record nur 5 Strings mit der Länge von 150 Zeichen einlesen. Das ist dann wie in Stein gemeißeltes Gesetz und das is zur Laufzeit auch starr. Hingegen mit Stringlists oder Array oder ähnlichem kannst du wirklich dynamisch auf den Aufbau eingehen. Und wenn ein String in der Datei mal 151 Zeichen hat, ist das der Stringlist oder dem Array egal.
lg elundril
//edit: oder du hast es schon nachgelesen, hoff ich, da der link hier schon mal gepostet wurde.
jasocul - Di 01.02.11 09:12
Warum nimmst du nicht einfach INI-Dateien?
Delphi liefert alles dafür mit.
pesi - Di 01.02.11 15:45
Hi,
wie wäre es denn wenn Du Dir mal VALUES genauer anschaust.
Du müsstest dann eine Textdatei haben in der Deine Werte mit einem Bezeichner stehe. Die lädst Du in Dein Programm ein (Stichwort "LoadFromFile") und kannst dann auf die Parameter die Du benötigst zugreifen.
Hier mal ein Auszug aus der Hilfe (D5):
Zitat: |
Die Eigenschaft Values repräsentiert den Teil-String für Strings der Form “Bezeichner=Wert“.
property Values[const Name: string]: string;
Beschreibung
Enthält die String-Liste eines TStrings-Objekts Einträge in der Form “Bezeichner=Wert“, dann läßt sich mit der Eigenschaft Values auf den Teil-String zugreifen, der den Wert enthält. Enthält die Liste keine String-Einträge in dem erwarteten Format, oder entspricht keiner der String-Einträge dem Parameter Name, so gibt die Eigenschaft Values einen Leer-String zurück.
Strings mit diesem Format findet man gewöhnlich in INI-Dateien. Das folgende Beispiel entstammt einer DELPHI.INI-Datei:
DisplayGrid=1
SnapToGrid=1
GridSizeX=8
GridSizeY=8
Das Format “Bezeichner=Wert“ gilt übrigens auch für die Strings der Eigenschaft Params einer Datenbank-Komponente (TDatabase).
Der Teil-String Name steht als Bezeichner auf der linken Seite des Gleichheitszeichens (=), der aktuelle Wert rechts davon. Zwischen dem Gleichheitszeichen und den beiden Teil-Strings sind keine Leerzeichen zulässig. |
Velleicht hilft das ja???
Gruß Peter
Moderiert von
Gausi: b- durch Quote-Tags ersetzt.
elundril - Di 01.02.11 15:56
Bevor ihr ihn da jetzt mit INI-Tutorials und sonstwas überhäuft, schon mal überlegt ob er sich das Dateiformat selber aussuchen kann? Ev. wird ihm die CVS-datei von einem anderen Programm so geliefert, bzw von Kunden, Freunden oder ähnlichem. Da bringen ihm die InI-Dateien auch eher weniger, weil er trotzdem nur CVS vor sich liegen hat. ;)
BTW, würde ich von INIs eher abstand nehmen und wenn dann XMLs verwenden, da der Support von INIs nicht wirklich garantiert und veraltet ist. Außerdem wären XMLs viel flexibler als INIs.
lg elundril
jasocul - Di 01.02.11 16:33
@elundril:
Stimmt. Hast natürlich Recht. Asche auf mein Haupt.
bfelix - Di 01.02.11 17:18
Danke für die Tipps! Ich hab mich jetzt für typ. Dateien entschieden. Nein, ich bekomme keine Daten von Kunden, ich erstelle diese mit einem zusätzlichen selbstprogrammierten Programm.
mfg und nochmal Danke,
Felix
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!