Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateiinhalt -> TStrings? (https://www.delphipraxis.net/28508-dateiinhalt-tstrings.html)

smash 25. Aug 2004 16:06


Dateiinhalt -> TStrings?
 
Hallo,

ich möchte gerne einer Assign- Methode gerne einen Dateiinhalt übergeben.
Was funktioniert ist:

Delphi-Quellcode:
XYZ.ASSIGN(Memo1.Lines);
Jedoch möchte ich kein Memo- Feld übergeben, sondern wie gesagt den Inhalt einer Datei.
Also habe ich probiert:

Delphi-Quellcode:
var
   str: TStrings;
begin
   str := TStrings.Create;
   str.LoadFromFile('abc.tpl');
   XYZ.Assign(str);
end;
Dies funktioniert jedoch nicht! :-(
Kann mir einer sagen wie es richtig sein muss?
Die Assign Methode erwartet: "Source: TPersistent"

Was aber eigentlich mein Ziel ist: Ich möchte in der Datei gerne bestimmte Variablen (%xyz%) durch bestimmte Werte ersetzen.
Wie schreibe ich mir eine Funktion welche den Inhalt einer Datei einliest, bestimmte Sachen, die irgendwo in der Datei vorkommen ersetzt, und mir eine konforme Form (TStrings?) zurückliefert?

Danke für eure Ideen und Hilfen!

int 25. Aug 2004 16:08

Re: Dateiinhalt -> TStrings?
 
Du kannst auch TStringList benutzen. LoadFromFile ist dabei schon integriert.

scp 25. Aug 2004 16:29

Re: Dateiinhalt -> TStrings?
 
Wahrscheinlich ist XYZ ein Memo oder eine Listbox, dann musst du so vorgehen:
Delphi-Quellcode:
var
   str: TStrings;
begin
   str := TStrings.Create;
   str.LoadFromFile('abc.tpl');
   XYZ.Lines.Assign(str);
end;
Bzw. bei Listbox
Delphi-Quellcode:
   XYZ.Items.Assign(str);
end;

Sanchez 25. Aug 2004 16:44

Re: Dateiinhalt -> TStrings?
 
Zitat:

Zitat von int
Du kannst auch TStringList benutzen.

Nein, du solltest TStringlist benutzen. TStrings ist eine Oberklasse, die abstrakte Methoden enthält.
Sie stellt eigentlich nur sowas wie ein Interface dar.

smash 25. Aug 2004 16:52

Re: Dateiinhalt -> TStrings?
 
Noch mal neu:

Es handelt sich um das Objekt TidMessage von den Indy- Komponenten.
Dieses Objekt hat folgende Methode:

MsgSend.Body.Assign(Source: TPersistent)

So. Folgendes funktioniert:
MsgSend.Body.Assign(Memo1.Lines);

Aber: Da ich nicht mit einem Memo arbeiten möchte, sondern eine TXT- Datei dareinladen möchte muss ich was tun?
Ich bin soweit, bzw. glaube soweit zu sein, dass ich eine TStringList oder ein TStrings brauche.
Aber mehr weiß ich nicht.

Sanchez 25. Aug 2004 17:02

Re: Dateiinhalt -> TStrings?
 
Dann nimm am besten:

Delphi-Quellcode:
  MsgSend.Body.LoadFromFile(textdatei);
grüße, daniel

smash 26. Aug 2004 10:22

Re: Dateiinhalt -> TStrings?
 
Zitat:

Zitat von Sanchez
Dann nimm am besten:

Delphi-Quellcode:
  MsgSend.Body.LoadFromFile(textdatei);
grüße, daniel

Hallo Sanchez,

das funktioniert prinzipiell.
Jetzt nur noch ein Problem:

Ich will die TXT- Datei ja nicht im unveränderten Zustand senden, sondern gewisse Wörter ersetzen.

Wie gehe ich da vor?

Sanchez 26. Aug 2004 10:54

Re: Dateiinhalt -> TStrings?
 
Hallo,

Dann lädst du die Datei am Besten in eine Stringlist und "assignst" dann die Stringliste dem Body.

Delphi-Quellcode:
var str: TStringlist;
begin
   str := TStringlist.Create;
   str.LoadFromFile(textfile);
   
   //hier kannst du den Text manipulieren
   
   MsgSend.Body.Assign(str);
end;

grüße, daniel


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 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