AGB  ·  Datenschutz  ·  Impressum  







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

Text (ASCII) Datei

Ein Thema von jo1234 · begonnen am 5. Jan 2006 · letzter Beitrag vom 5. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
jo1234

Registriert seit: 5. Jan 2006
6 Beiträge
 
Delphi 2006 Professional
 
#1

Text (ASCII) Datei

  Alt 5. Jan 2006, 10:47
Hallo,

ich möchte aus einer vorhandenen ASCII-Datei (durch Leerzeichen getrennt) die Zeilen
rauslesen und einzelen Strings aus diesen Zeilen in eine neue Datei (durch Semikolon getrennt)
schreiben (auch Zeilenweise). Gibt es eine elegantere Variante als mit readln, copy und writeln?

Danke!!

Reiner
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#2

Re: Text (ASCII) Datei

  Alt 5. Jan 2006, 10:50
Hi,

Herzlich Willkommen erst einmal in der Delphi-Praxis.

Ja es gibt eine möglichkeit. Mit StringReplace kannst du ein altest zeichen und geben und durch ein neues ersetzen.

PS: Ist allerdings nicht zeichen weise.

MFG Christian18
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#3

Re: Text (ASCII) Datei

  Alt 5. Jan 2006, 11:05
Hallo,

ich habe gerade mal eine kleine Routine programmiert die das für Dich erledigt.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var o : TOpenDialog;
      f1, f2 : TextFile;
      s1, s2 : String;
      s : TSaveDialog;
begin
  o:=TOpenDialog.Create(self);
  s:=TSaveDialog.Create(self);

  if o.Execute then
    begin
      AssignFile(f1, o.FileName);
      Reset(f1);
      if s.Execute then
        begin
          AssignFile(f2, s.FileName);
          Rewrite(f2);
          while not Eof(f1) do
            begin
              Readln(f1, s1);
              s2:=StringReplace(s1, ' ', ';', [rfReplaceAll]);
              s:=TSaveDialog.Create(self);
              Writeln(f2, s2);
            end;
          CloseFile(f2);
        end;
      CloseFile(f1);
    end;
  s.Free;
  o.Free;
end;
Edit:

Wenn du große Files konvertieren willst, dann würde ich noch empfehlen eine ProgressBar oder Gauge einzubauen, damit der Benutzer weiß, wielanger er nch warten muß, bis das programm fertig ist mit der ausführung.

MFG Christian18
  Mit Zitat antworten Zitat
jo1234

Registriert seit: 5. Jan 2006
6 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Text (ASCII) Datei

  Alt 5. Jan 2006, 11:20
Hallo Christian 18,

danke für die schnelle Antwort !! Bin begeistert!

Das Problem ist, dass ich nur einzelne Strings aus der Datei benötige.
Auch sind die verschieden viele Leerzeichen zwischen den Strings der Urdatei.

Beispiel:

Urdatei:
12 Meier 32456 Teststrasse 99999 München 1340.70

Neue Datei:
32456;Meier;Teststrasse;99999;München;1340.70

Ich hoffe, so wird es klarer. Die Dateien sind ca. 1MB groß.

Reiner
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Text (ASCII) Datei

  Alt 5. Jan 2006, 11:28
Sind die vertauschten Positionen immer gleich?

Statt in einen String zuladen Stringlist verwenden, dann kannst du auf die einzelnen Teilstring indiziert zugreifen.

Delphi-Quellcode:
  ..
var
  ..
  sl1, sl2: TStrings;
begin
  sl1 := TStringList.Create;
  sl2 := TStringList.Create;
  sl1.Delimiter := ' ';
  sl2.Delimiter := ';';
  ..
    Readln(f1, s1);
    sl2.DelimitedText := '';
    sl1.DelimitedText := s1;
    sl2.ValueFromIndex[0] := sl1.ValueFromIndex[2];
    sl2.ValueFromIndex[1] := sl1.ValueFromIndex[1];
   usw.
Markus Kinzler
  Mit Zitat antworten Zitat
jo1234

Registriert seit: 5. Jan 2006
6 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Text (ASCII) Datei

  Alt 5. Jan 2006, 11:33
@mkinzler

Ja, die vertauschten Positionen sind immer gleich. Nur die Länge der Positionen sind
verschieden.

Reiner
  Mit Zitat antworten Zitat
markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#7

Re: Text (ASCII) Datei

  Alt 5. Jan 2006, 11:35
Hallo @ all

Ich denke, hier könnte man auch einfach mit einem Stream arbeiten, der Zeichenweise nach einem " " sucht und es durch ein ";" ersetzt ...

mfG

Markus
Markus
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Text (ASCII) Datei

  Alt 5. Jan 2006, 11:39
Habe den Sourcecode ergänzt ( s.o)
Markus Kinzler
  Mit Zitat antworten Zitat
jo1234

Registriert seit: 5. Jan 2006
6 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Text (ASCII) Datei

  Alt 5. Jan 2006, 11:56
Danke für die super Antworten !!

Ein Problem habe ich aber noch:

Was mache ich, wenn zwischen 2 versch. Strings manchmal kein Leerzeichen ist,
z.B. 34567Kilianstr
Ich brauche hier 34567;Kilianstr

Kann oder muß ich hier die zählen und die Position angeben?

Reiner
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Text (ASCII) Datei

  Alt 5. Jan 2006, 12:07
Zitat von jo1234:

Kann oder muß ich hier die zählen und die Position angeben?

Reiner
Da wirst du leider nicht drumrumkommen.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:41 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