AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Daten in eine externe Datei Schreiben

Daten in eine externe Datei Schreiben

Ein Thema von snjake · begonnen am 24. Dez 2009 · letzter Beitrag vom 26. Dez 2009
Antwort Antwort
snjake

Registriert seit: 22. Dez 2009
9 Beiträge
 
#1

Daten in eine externe Datei Schreiben

  Alt 24. Dez 2009, 14:40
Hallo liebe Community,

Ich habe eine größere Programmier-Aufgabe vor mir und da ich Delphi bisher kaum benutzt habe möchte ich eure Hilfe in anspruch nehmen. Das meiste dürfte ich mit etwas Mühe und Logik auf die Reihe kriegen nur bröchte ich einen Ansatz für das Ablegen der Messdaten.


Zur Sache:

Es werden über eine Schnittstelle Daten eingelesen und mit Delphi verarbeitet, diese Daten sollen in einer externen Datei abgespeichert und bei Bedarf wieder ausgelesen werden.

Welche art von Datei dabei angelegt wird ist eigentl. egal, *.txt würde ich persönlich bevorzugen.

Kurz gesagt, kann mir vlt. jemand ein kleinen Programmabschnitt schreiben der eine externe Datei erzeugt, dort Daten ablegt und wieder ausliest???

Wichtig wäre für mich auch zu verstehen wie die Datenblöcke in eine TXT abgelet werden, ich weiss nicht inwiefern es machbar ist bestimmte Abstände zwischen den EInzelnen Messdaten einzuprogrammieren, so dass man auch in der TXT eine Übersicht hat.

z.B.

777777 777777 777777 777777 777777 777777 777777
777777 777777 777777 777777 777777 777777 777777
777777 777777 777777 777777 777777 777777 777777
777777 777777 777777 ...u.s.w


die Siebenen stehen repräsentativ für die Daten (Messwerte).

Genial wäre es auch wenn man z.B auf bestimmte Werte über das Programm genau zugreifen könnte
z.B. (3.te Zeile 4 Messwert.)
  Mit Zitat antworten Zitat
snjake

Registriert seit: 22. Dez 2009
9 Beiträge
 
#2

Re: Daten in eine externe Datei Schreiben

  Alt 24. Dez 2009, 21:55
Hmm, leider keine Anregungen?


Also ich habe mir schon selbst paar gedanken gemacht, vlt. kann ja einer von euch mir weiter helfen???

===================

procedure TForm1.Button1Click(Sender: TObject);
var Text_Datei : TextFile;
s : String;

begin

//In Textdatei schreiben
AssignFile (Text_Datei, 'C:\Test.txt');
Rewrite(Text_Datei);
s := ('120A'); //Messwert
Write(Text_Datei,s);
Write(Text_Datei,' '); //Abstand zwischen die Messwerte schreiben
s := ('125A'); //Messwert
Write(Text_Datei,s);
CloseFile(Text_Datei);
end;



//aus der Textdatei lesen

procedure TForm1.Button2Click(Sender: TObject);
var list:TStringlist;
begin
list:=TStringlist.create;
list.loadfromfile('C:\Test.txt');
edit1.text:=list.strings[0];
end;

end.



Es funktioniert auch, nur wird natürlich ein ganzer string eingelesen, ich müsste jetzt mitels einer Hilfsvariablen und einer IF-Schleife den String so kürzen dass nur der benötigte Messwert über bleibt. Aber es ist mir zuviel Pfusch, es müsste doch auch möglich sein direkt nur den Wert einzulesen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Daten in eine externe Datei Schreiben

  Alt 24. Dez 2009, 22:53
Warum benutzt du nicht auch zum Schreiben eine StringListe? und wenn du zeilenweise in eine Textdatei schreiben willst, benutze Delphi-Referenz durchsuchenWriteln.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Daten in eine externe Datei Schreiben

  Alt 25. Dez 2009, 10:31
Zitat von snjake:
Hallo liebe Community,
Ich habe eine größere Programmier-Aufgabe vor mir und da ich Delphi bisher kaum benutzt habe möchte ich eure Hilfe in anspruch nehmen. Das meiste dürfte ich mit etwas Mühe und Logik auf die Reihe kriegen nur bröchte ich einen Ansatz für das Ablegen der Messdaten.
Messwerte? Das klingt nach Zahlen. Warum benutzt du dann eine Textdatei?
Delphi-Quellcode:
type
  TIntFile = file of Int64; // Ganzzahlen
  TDoubleFile = file of double; // Kommazahlen

var
  IntFile: TIntFile;
  DoubleFile: TDoubleFile;

begin
  Assign(IntFile,'xyz.abc');
  Assign(DoubleFile,'xyz2.abc');
  ReWrite(IntFile);
  ReWrite(DoubleFile);
  Write(IntFile,89);
  Write(DoubleFile,8.9);
  Close(IntFile);
  Close(DoubleFile);
end;
  Mit Zitat antworten Zitat
Benutzerbild von skh
skh

Registriert seit: 17. Aug 2005
Ort: Saarland
28 Beiträge
 
Delphi 7 Professional
 
#5

Re: Daten in eine externe Datei Schreiben

  Alt 25. Dez 2009, 16:14
Hallo,
wie wäre es aus deinen Daten eine CSV-Tabelle zu erstellen.
Die kann man dann in Excel weiterverarbeiten als wäre es eine Excel-Tabelle.
Ich protokolliere alles über diesen Weg.
Die kann man auch wieder evtl.mit Delphi einlesen!
Sollte nur eine Anregung sein.....

Gruss
KH
Karl-Heinz
  Mit Zitat antworten Zitat
snjake

Registriert seit: 22. Dez 2009
9 Beiträge
 
#6

Re: Daten in eine externe Datei Schreiben

  Alt 26. Dez 2009, 12:15
@ all danke für eure Anregungen und Tipps.


@skh

Zitat von skh:
Hallo,
wie wäre es aus deinen Daten eine CSV-Tabelle zu erstellen.
Die kann man dann in Excel weiterverarbeiten als wäre es eine Excel-Tabelle.
Ich protokolliere alles über diesen Weg.
Die kann man auch wieder evtl.mit Delphi einlesen!
Sollte nur eine Anregung sein.....

Gruss
KH

Hallo,

klingt plausibel für mich, wie lege ich den eine solche Datei bei Delphi an?

also was müsste ich statt " var Text_Datei : TextFile; " nehmen?


Hab mich bissl durchgelesen und so eine variablen Deklaration für CSV gibt es vermutlich garnicht, da müsste ich also mit strings arbeiten. Das würde ich aber sehr gern aus gegeben Gründen vermeiden.
  Mit Zitat antworten Zitat
snjake

Registriert seit: 22. Dez 2009
9 Beiträge
 
#7

Re: Daten in eine externe Datei Schreiben

  Alt 26. Dez 2009, 20:55
Habe folgendes zur CSV gefunden:

Delphi-Quellcode:
//SaveToCSV ausführen (sample call)

procedure TForm1.Button1Click(Sender: TObject);
begin
   SaveToCSV;
end;


function TForm1.SaveToCSV:Boolean;
var
  SD : TSaveDialog;
  I : Integer;
  CSV : TStrings;
  FileName : String;
begin
  Try
  // Filedialog erzeugen
  SD := TSaveDialog.Create(Self);
  SD.Filter := 'CSV-Trennzeichen getrennt (*.csv)|*.CSV';
  //Filedialog ausführen
  If SD.Execute = True Then
  Begin

    //Filename zuweisen
    FileName := SD.FileName;
    If Copy(FileName,Pos('.',FileName),Length(FileName)-Pos('.',FileName)+1) <> '.csvThen FileName := FileName + '.csv';
    Screen.Cursor := crHourGlass;
    //Stringliste erzeugen
    CSV := TStringList.Create;
    Try
      edit1.text := ('Hallo');
      //Stringliste füllen
      For I := 0 To (StringGrid1.RowCount - 1) Do CSV.Add(StringGrid1.Rows[I].commatext);
      //CSV speichern
      CSV.SaveToFile(FileName);
      Result := True;
    Finally
      CSV.Free;
    End;
  End;

  Finally
    SD.Free;
    Screen.Cursor := crDefault;
  End;
end;

Blöderweise wird eine CSV erstellt in der die Zellen voll mit komas sind, und ich blicke nicht durch woran das liegt. Anzahl der kommas per Zelle entspricht der Anzahl der "cols" von dem "StringGrid1".

normalerweise sollten doch die Kommas in der Datei die Spalten Trennen...leider finde ich sogut wie garnichts zur CSV Daten Speicherung, über das "einlesen der CSV-Daten in Delphi" gibt es mehr als genug Beispiele umgekehrt aber sogut wie nichts komme echt nicht weiter!!!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:43 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