AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Textdatei ohne Trennzeichen verarbeiten
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei ohne Trennzeichen verarbeiten

Ein Thema von Bali · begonnen am 10. Feb 2009 · letzter Beitrag vom 10. Feb 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#11

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:42
Zitat von Sir Rufo:
hmmm, glaubt ihr wirklich, dass das einfacher ist, als eine Schema.ini anzulegen und dann mit TADOTable / TADOQuery darauf zuzugreifen?
cu

Oliver
Achherje...

Naja warum auch nicht... 10.000 Anweisung und Treiber für ein Problem welches sich mit einem simplen Move lösen läßt!
Delphi-Quellcode:
var
  Zeile, Kundenname : Shortstring;
begin
...
  Readln(f,Zeile);

  Move(Zeile[6],Kundenname[1],18);
  Kundenname[0] := #18;
end;
Frank
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#12

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:48
Oder nimm einfach:
Delphi-Quellcode:
{$A1}
type
  TAdresse = record
               Kundennummer : String[5];
               Kundenname : String[18];
               Strasse : String[13];
             end;

var
  Zeile : String;
  f : Textfile;
  Adresse : TAdresse;
begin
  While not(eof(f)) do
    begin
      readln(f,Zeile);
      with Adresse do
        begin
          Kundennummer := Copy(Zeile,1,5);
          Kundenname := Copy(Zeile,6,18);
          Strasse := Copy(Zeile,39,Sizeof(Strasse)-1); // oder so
        end;
    end;
end;
Grüsse Frank
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:56
Zitat von Mavarik:
Zitat von Sir Rufo:
hmmm, glaubt ihr wirklich, dass das einfacher ist, als eine Schema.ini anzulegen und dann mit TADOTable / TADOQuery darauf zuzugreifen?
cu

Oliver
Achherje...

Naja warum auch nicht... 10.000 Anweisung und Treiber für ein Problem welches sich mit einem simplem Move lösen läßt!
Delphi-Quellcode:
var
  Zeile, Kundenname : Shortstring;
begin
...
  Readln(f,Zeile);

  Move(Zeile[6],Kundenname[1],18);
  Kundenname[0] := #18;
end;
Frank
Wenn ich mit dem programm flexibel bleiben möchte, dann ändere ich die Schema.ini, wenn sich die Spaltenbreiten ändern, ohne Programmierung.
Und ansonsten kümmer ich mich nur um die Verarbeitung der Sätze, die mir mundgerecht schon als einzelner Record geliefert werden.

Einschränkung der Datensätze mittels SQL-Befehlen (via TADOQuery)

Ob das Nachteile sind? Gut, wenn kein ADO vorhanden ... dann bleibt nur die Record-Variante ... aber muss ich mich als Programmierer um alles kümemrn ... oder darf ich auch Vorhandenes benutzen?

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Bali

Registriert seit: 10. Feb 2009
23 Beiträge
 
Delphi 2005 Professional
 
#14

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:58
oh mann .... irgendwie stehe ich heute aufn Schlauch

Ich versteh nicht, warum mann das braucht:

Delphi-Quellcode:
type
  TAdresse = record
               Kundennummer : String[5];
               Kundenname : String[18];
               Strasse : String[13];
             end;
wenn man später das macht:

Delphi-Quellcode:
Kundennummer := Copy(Zeile,1,5);
          Kundenname := Copy(Zeile,6,18);
          Strasse := Copy(Zeile,39,Sizeof(Strasse)-1); // oder so
Ich dachte auch das ich evtl. mit AssignFile arbeiten muss ... weil die .txt Datei auf dem Server liegt ...

C:\Temp\personal.txt (Beispielpfad)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 11:04
Delphi-Referenz durchsuchenAssignFile hat aber nix damit zu tun, dass eine Datei auf einem Server liegt!

Ich weise einer Datei-Variablen eine Datei zu.

Delphi-Quellcode:
var
  ZeigerAufDatei : Text;
begin
  AssignFile( ZeigerAufDatei, 'C:\Der\Pfad\zu\meiner\Datei.txt' );
  ...
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#16

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 11:05
oder die ganz banale Methode (ist für Anfänger oft leichter zu verstehen)

Delphi-Quellcode:
assignfile(eingabedatei,'hier kommt der Dateiname hin');
reset(eingabedatei);

while not eof(eingabedatei) do
begin
  readln(eingabedatei, eingabezeile);
  kundennummer:=trim(copy(eingabezeile, 1, 5));
  vollername:=trim(copy(eingabezeile, 6, 19));
  strasse:=trim(copy(eingabezeile, 25, 14));
  etc.
end;

closefile(eingabedatei);
Bei der Copy-Funktion musst du als Parameter die erste Position und die Länge übergeben, die musst du also einmal für alle Felder ausrechnen.
Die Trim-Funktion sollte man nicht vergessen, weil man sich sonst lauter überflüssige Leerstellen in die Daten reinholt.
Auf diese Art erhält man die Daten jeweils in String-Format. Falls numerische oder Datums-Angaben enthalten sind, müssen diese noch entsprechend umgewandelt werden!

PS: das mit dem Record funktioniert nur, wenn du Arrays verwendest. Dann musst du aber auch noch mal rumschieben, um die Daten auch auswerten zu können.
Bei Strings in der Record-Definition fällst du auf die Nase ... das liegt an dem Längenbyte, das auch Mavarik schon angesprochen hat (ansprechbar mit stringname[0]) ... dieses ist aber in der Eingabedatei nicht enthalten.
  Mit Zitat antworten Zitat
Bali

Registriert seit: 10. Feb 2009
23 Beiträge
 
Delphi 2005 Professional
 
#17

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 11:09
Ja Sir Rufo,

habs bissl blöd formuliert, sorry
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#18

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 11:11
Zitat von Sir Rufo:
Wenn ich mit dem programm flexibel bleiben möchte, dann ändere ich die Schema.ini, wenn sich die Spaltenbreiten ändern, ohne Programmierung.
Und ansonsten kümmer ich mich nur um die Verarbeitung der Sätze, die mir mundgerecht schon als einzelner Record geliefert werden.
Damit hast du natürlich recht, aber man darf die Leute auch nicht überfordern!
Im übrigen lässt sich das auch ohne ADO mit passender INI lösen, z.B. so:
Delphi-Quellcode:
[Feldlaengen]
Kundennummer=5
Vollername=19
Strasse=14
etc.
Dann kann man sich die Positionen im Programm auch ausrechnen.
  Mit Zitat antworten Zitat
Bali

Registriert seit: 10. Feb 2009
23 Beiträge
 
Delphi 2005 Professional
 
#19

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 11:13
Super Globetrotter77 !

Sowas habe ich gesucht

da hätte ich jetzt nur noch eine Frage, wie ich die eingabedatei definiere ?

string oder ?

Dankeschön euch allen, ich probiers gleich mal aus und gebe noch einmal ein Feedback ^^
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#20

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 11:15
Delphi-Quellcode:
var eingabedatei: TextFile;
  eingabezeile: string;
  kundennummer: string;
begin
  assignfile(eingabedatei,'test.txt');
  reset(eingabedatei);
  while not eof(eingabedatei) do
  begin
    readln(eingabedatei);
    kundennummer:=Trim(copy(eingabezeile,1 , 5));
    ...
  end;
  closefile(eingabedatei);
Edit: reset hat gefehlt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 03:47 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