Inhalt einer TXT-Datei in Word-Datei schreiben

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Inhalt einer TXT-Datei in Word-Datei schreiben

Beitrag von wp_xyz »

Probier's halt. Kostet nichts, und es kann nichts schief gehen...

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Inhalt einer TXT-Datei in Word-Datei schreiben

Beitrag von Komoluna »

Probieren geht über(und schneller als) studieren (bzw. Frage posten).

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

pascalts
Beiträge: 61
Registriert: Fr 10. Okt 2014, 13:16

Re: Inhalt einer TXT-Datei in Word-Datei schreiben

Beitrag von pascalts »

Okay, zwischendurch mal ein dickes Danke an alle die hier kräftig mithelfen. Ich bin erst seit kurzem mit Lazarus unterwegs und freue mich immer wieder neues zu lernen!

Da nun das auslesen gut klappt (dank euch ;-) ) kann ich einen Schritt weiter gehen. Es sollen nur Teile einer TXT-Datei ausgelesen werden. Genau gesagt, es sollen nur die Zeilen in den String (welcher als Puffer fungiert) geschrieben werden, die mit einer speziellen Buchstabenkombination beginnen. Beispiel:

aus

Code: Alles auswählen

A 795      [ ]                                            Makro 99*
A 796      [ ]                                            Makro 99*
A 797      [ ]                                            Makro 99*
A 798      [ ]                                            Makro 99*
A 799      [ ]                                            Makro 99*
A 800      [ ]                                            Makro 99*
Makro 222  [ ]                                 Makro 220
Makro 223  [ ]                                 Makro 220
M 1        [Pneumatische Kontrollen und maschinelle Sicherheit]   Folge 7, 42, 124, 999, UP 1, 8, 9, 10, Makro 95*
M 18       [Stellungsueberwachung S-Zange 1]                      Makro 1*, 2*, 3*, 54*, 95, 201*, 210*, 211*, 212*, 213*, 221*, 0*
M 24       [Spanngruppe5 YP17 in V & !R Stellung]                 Makro SPS
bin 1      [Schweissprogramm BOSCH]   Folge 7*, 42*, 124*, 999*, UP 1*, 10*, Makro 216*
bin 10     [Fzg-Typ an Bosch]         Folge 7*, 42*, 999*, UP 1*
t 1        Folge 42*, 999*, Makro 82
t 2        Folge 42*


sollen nur die Zeilen in den String geschrieben werden, welche mit "A" beginnen:

Code: Alles auswählen

A 795      [ ]                                            Makro 99*
A 796      [ ]                                            Makro 99*
A 797      [ ]                                            Makro 99*
A 798      [ ]                                            Makro 99*
A 799      [ ]                                            Makro 99*
A 800      [ ]                                            Makro 99*


kann man das irgendwie filtern? Die Zahl der Einträge variiert natürlich, was es unmöglich macht zu sagen, wie oft ReadLn(File1, str); also der Lesen-Befehl ausgeführt wird. Meine Idee geht in folgende Richtung: Es werden alle Zeilen gelesen, der erste Buchstabe ausgewertet, per if then else entschieden ob in den string übertragen wird.

Nur habe ich keinen Ansatz wie das gehen soll... (bin eben noch Einsteiger :-P )

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Inhalt einer TXT-Datei in Word-Datei schreiben

Beitrag von theo »

Es gibt verschiedene Möglichkeiten.
Eine simple Variante:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var SLO, SLR:TStringList;
  i:integer;
begin
  SLO:=TStringList.Create;
  SLO.LoadFromFile('/home/theo/litest.txt');
  SLR:=TStringList.Create;
  For i:=0 to SLO.Count-1 do
    if SLO[i][1]='A' then SLR.Add(SLO[i]);
  ShowMessage(SLR.Text);
  SLR.Free;
  SLO.Free;
end;     


Wenn die Datei riesig gross ist, gibt es sparsamere Möglichkeiten.

pascalts
Beiträge: 61
Registriert: Fr 10. Okt 2014, 13:16

Re: Inhalt einer TXT-Datei in Word-Datei schreiben

Beitrag von pascalts »

Okay, die Variante gefällt mir erstmal, weil sie simpel ist und funktioniert! Meine Datei hat aber bin zu 2000 Zeilen... wirkt sich das arg auf die Performance aus?

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Inhalt einer TXT-Datei in Word-Datei schreiben

Beitrag von theo »

pascalts hat geschrieben:Okay, die Variante gefällt mir erstmal, weil sie simpel ist und funktioniert! Meine Datei hat aber bin zu 2000 Zeilen... wirkt sich das arg auf die Performance aus?

Nö, ich meinte sowieso eher den Speicherverbrauch, aber so ab ein paar 100 MB.
Für 2000 Zeilen lohnen sich keine Optimierungen, ausser in besonders kritischen Fällen (Multithreaded Server vllt.)

pascalts
Beiträge: 61
Registriert: Fr 10. Okt 2014, 13:16

Re: Inhalt einer TXT-Datei in Word-Datei schreiben

Beitrag von pascalts »

okay, danke. habe lange nicht mehr so viel gelernt wie in der letzten Woche hier im Forum. Aber jetzt kommt der Hammer: Ich muss in einer .ini-Datei (die sich sicher wie eine .txt Datei öffnen lässt, oder?) eine (einzelne) Zeile finden, welche mit RobName= beginnt UND dann das was danach steht in eine Variable verwandeln (meist ist das was danach steht eine Kombination aus Zahlen und Großbuchstaben, danach eine neue Zeile). Es sind keine Wiederholungen nötig oder Ähnliches... Vorschläge?


Antworten