Autor |
Beitrag |
bfelix
      
Beiträge: 61
WIN 2000 Prof., Win XP Prof., Win 7 Starter und Prof., SuSe Linux 11.3,
Delphi 7 Pers.
|
Verfasst: Mo 31.01.11 19:01
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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Mo 31.01.11 19:04
Mhm, das ist schön. tu nur, wir haben nichts dagegen.
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
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
bfelix 
      
Beiträge: 61
WIN 2000 Prof., Win XP Prof., Win 7 Starter und Prof., SuSe Linux 11.3,
Delphi 7 Pers.
|
Verfasst: Mo 31.01.11 19:07
also gut...
wie kann ich die Datei auslesen und sie strukturiert in Variablen benutzen
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: 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.
Für diesen Beitrag haben gedankt: bfelix
|
|
bfelix 
      
Beiträge: 61
WIN 2000 Prof., Win XP Prof., Win 7 Starter und Prof., SuSe Linux 11.3,
Delphi 7 Pers.
|
Verfasst: 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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Für diesen Beitrag haben gedankt: bfelix
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mo 31.01.11 19:23
Vorschlag zum Einstieg
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. |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Für diesen Beitrag haben gedankt: bfelix
|
|
gnomecoder
      
Beiträge: 51
Erhaltene Danke: 5
|
Verfasst: Mo 31.01.11 21:34
muss es ne Textdatei sein?
habe mit typisierten Dateien gute Erfahrungen gemacht: www.delphi-treff.de/...-dateien/einleitung/
edit: war wohl doch keine gute idee, du willst das programm ja flexibler machen. hab ich beim ersten mal überlesen.
Für diesen Beitrag haben gedankt: bfelix
|
|
bfelix 
      
Beiträge: 61
WIN 2000 Prof., Win XP Prof., Win 7 Starter und Prof., SuSe Linux 11.3,
Delphi 7 Pers.
|
Verfasst: Mo 31.01.11 21:39
sind typisierte dateien im programm verankert oder extern?
|
|
gnomecoder
      
Beiträge: 51
Erhaltene Danke: 5
|
Verfasst: 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.
Für diesen Beitrag haben gedankt: bfelix
|
|
bfelix 
      
Beiträge: 61
WIN 2000 Prof., Win XP Prof., Win 7 Starter und Prof., SuSe Linux 11.3,
Delphi 7 Pers.
|
Verfasst: 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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 01.02.11 04:19
Jain. Deine Formulierung ist ein bisschen zu vage. Wie genau typisierte Dateien aufgebaut sind, kannst du hier 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.
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Für diesen Beitrag haben gedankt: bfelix
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 01.02.11 09:12
Warum nimmst du nicht einfach INI-Dateien?
Delphi liefert alles dafür mit.
Für diesen Beitrag haben gedankt: bfelix
|
|
pesi
      
Beiträge: 67
Erhaltene Danke: 1
|
Verfasst: 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.
Für diesen Beitrag haben gedankt: bfelix
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Für diesen Beitrag haben gedankt: bfelix
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 01.02.11 16:33
@elundril:
Stimmt. Hast natürlich Recht. Asche auf mein Haupt.
Für diesen Beitrag haben gedankt: bfelix
|
|
bfelix 
      
Beiträge: 61
WIN 2000 Prof., Win XP Prof., Win 7 Starter und Prof., SuSe Linux 11.3,
Delphi 7 Pers.
|
Verfasst: 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
|
|