AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei in Record Muster überführen

Ein Thema von mabstudent · begonnen am 12. Jan 2013 · letzter Beitrag vom 21. Jan 2013
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#1

AW: Textdatei in Record Muster überführen

  Alt 12. Jan 2013, 14:12
Dann teil doch das Gesamtproblem einmal in Teilprobleme auf und schreib die schön einzeln als Funktionen bzw. Prozeduren. Eine ordentliche Einrückung hilft beim Code-Verständnis übrigens ungemein, Du solltest darauf achten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.778 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Textdatei in Record Muster überführen

  Alt 12. Jan 2013, 14:23
.. auslesen könnte so gehen..

Delphi-Quellcode:
procedure readRandomDataset(fileName: TFilename; var dataSet: TSprueche);
var
  dataFile : file of TSprueche;
  idx : longInt;
begin
  assignFile(dataFile,fileName);
  reset(dataFile); //Datei öffnen, Dateizeiger auf Pos. 0
  idx := random(sizeOf(dataFile)); // ermitteln eines zufälligen Datensatzes/Records
  seek(dataFile,idx); // setze Dateizeiger auf den zufälligen Datensatz
  read(dataFile,dataSet); // lese Datensatz/Record
  closeFile(dataFile); // Datei schliessen
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  dataSet : TSprueche;
begin
  readRandomDataSet('...',dataSet);
  memo1.Lines.Add(format('%s von %s',[dataSet.author,dataSet.textValue]));
end;
Einbauen könnte man noch eine gescheite Fehlerbehandlung.

Grüße
Klaus
Klaus

Geändert von Klaus01 (13. Jan 2013 um 10:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#3

AW: Textdatei in Record Muster überführen

  Alt 12. Jan 2013, 14:29
Und hier noch ein Grobkonzept zur Konvertierung:
Delphi-Quellcode:
type
  Tsprueche=record
    spruch:string[200];
    autor:string[50];
  end;
  
procedure StringToSpruch(const Line: string; var Spruch: TSprueche);
const
  DELIM = ';';
var
  DelimPos: integer;
begin
  FillChar(Spruch, SizeOf(Spruch), #0);
  DelimPos := Pos(DELIM, Line);
  Spruch.autor := Copy(Line, 1, DelimPos - 1);
  Spruch.spruch := Copy(Line, DelimPos + 1, MAXINT);
end;
  
procedure Konvertieren(const SrcFilename, DestFilename: string);
var
  Spruch: Tsprueche;
  Zeile: string;
  Eingabe: textfile;
  Ausgabe: file of Tsprueche;
begin
  (* Eingabe öffnen *)
  (* Ausgabe öffnen *)
  (* Schleife *)
    (* Zeile aus Eingabe lesen *)
    StringToSpruch(Zeile, Spruch);
    (* Spruch in Ausgabe schreiben *)
  (* Ende Schleife *)
  (* Ausgabe schließen *)
  (* Eingabe schließen *)
end;
Ungetestet, da im Editor heruntergetippt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mabstudent

Registriert seit: 13. Nov 2010
23 Beiträge
 
#4

AW: Textdatei in Record Muster überführen

  Alt 12. Jan 2013, 15:38
puh da ist zu viel bei wovon ich noch nie etwas gehört habe. Probiere gerade eure Tips so umzusetzen, dass ich nur das nutze was wir auch bisher an Werkzeug an die Hand bekommen haben, leider erfolglos.

Teilprobleme sind meiner Meinung nach:

1. Recorddatei 'sprueche.db' erzeugen (klappt noch)

Code:
type Tsprueche=record
spruch:string[200];
autor:string[50];
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  AssignFile(datei,'C:\...\'+'sprueche.dat');
  IF fileexists('C:\...\'+'sprueche.dat') THEN
  Reset(datei) ELSE Rewrite(datei);
end;

2. Die Sprüche aus der sprüche.txt Textdatei in die record datei namens datei schreiben, dabei nach spruch und autor trennen




3.Button1Click, also zufälligen Spruch ins Memo schreiben

Code:
procedure TForm1.Button1Click(Sender: TObject);
var spruch, autor:string;
 
begin
  nr:=random(filesize(datei));
  seek(datei,nr);
  //*Wie kann ich nun das was er da geseeked hat als string unter spruch speichern und den autor unter autor?
  spruch:= //alles vor ;
  autor:= //das nach ;
  memo1.Lines.Add(<spruch>+'von'+<autor>)
end;
Ich wäre für jeden weiteren Tipp sehr dankbar, dennoch habe ich die bereits vorhandenen Tipps auch noch nicht 100% durchschaut, daran arbeite ich gerade

Geändert von mabstudent (12. Jan 2013 um 15:50 Uhr)
  Mit Zitat antworten Zitat
mabstudent

Registriert seit: 13. Nov 2010
23 Beiträge
 
#5

AW: Textdatei in Record Muster überführen

  Alt 12. Jan 2013, 16:16
Zitat:
procedure Konvertieren(const SrcFilename, DestFilename: string);
var
Spruch: Tsprueche;
Zeile: string;
Eingabe: textfile;
Ausgabe: file of Tsprueche;
begin
(* Eingabe öffnen *)
(* Ausgabe öffnen *)
(* Schleife *)
(* Zeile aus Eingabe lesen *)
StringToSpruch(Zeile, Spruch);
(* Spruch in Ausgabe schreiben *) *//Könntest du den Teil konkretisieren?
(* Ende Schleife *)
(* Ausgabe schließen *)
(* Eingabe schließen *)
end;
Muss es heißen:

write(dateivariable,von, bis) oder write(dateivariable, was) ??
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#6

AW: Textdatei in Record Muster überführen

  Alt 12. Jan 2013, 16:20
Da steht Schleife, d.h. Du befindest Dich an der Stelle innerhalb einer solchen. Hier wurde die aktuell ausgelesene Zeile aus der Textdatei in den übergebenen Record geschrieben, es muss also heißen
write(Ausgabe, Spruch); wobei Ausgabe die Dateivariable der typisierten Datei und Spruch die Variable vom Typ des Records ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.778 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Textdatei in Record Muster überführen

  Alt 12. Jan 2013, 16:43
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  spruch, autor:string;
  dataSet : TSprueche; // dein Record
begin
  nr:=random(filesize(datei));
  seek(datei,nr);
  //*Wie kann ich nun das was er da geseeked hat als string unter spruch speichern und den autor
unter autor?
  read(datei,dataSet); // den record aus der Datei lesen
  spruch:= //alles vor ;
  spruch := dataSet.spruch;
  autor:= //das nach ;
  autot := dataSet.autor;
  memo1.Lines.Add(<spruch>+'von'+<autor>)
end;
Grüße
Klaus
Klaus
  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 06:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz