Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mehrere Text-Dateien in ein TMemo? (https://www.delphipraxis.net/10752-mehrere-text-dateien-ein-tmemo.html)

mlspider 24. Okt 2003 15:09


Mehrere Text-Dateien in ein TMemo?
 
Wie kann ich mit einen Klick gleich mehrere einzeilige Text-Dateien in ein TMemo laden?

Christian Seehase 24. Okt 2003 15:16

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

wenn Du die Dateien nach und nach in eine TStringList einliest, und mit AddStrings hinzufügst: Ja.

[EDIT]
TStringList muss es bei einzeiligen Dateien nicht sein, geht damit aber wohl am einfachsten.
[/EDIT]

mlspider 24. Okt 2003 15:20

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin ist gut!

Könntest Du mir mal nen kleines Code-Beispiel geben?

Danke

Christian Seehase 24. Okt 2003 15:25

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

Delphi-Quellcode:
var
  slWork : TStringList;

begin
  slWork := TStringList.Create;
  try
    slWork.LoadFromFile(PfadDerEinzulesendenDatei);
    Memo1.Lines.AddStrings(slWork);
  finally
    FreeAndNil(slWork);
  end;
end;
Bei einzeiligen Dateien genügt auch .Add(slWork.Text);, oder .Add(trim(slWork.Text));
Du musst mal ausprobieren, was bei Dir am Besten passt.

mlspider 24. Okt 2003 15:28

Re: Mehrere Text-Dateien in ein TMemo?
 
OK Christian, werd mal schauen ob es klappt.

mlspider 24. Okt 2003 17:20

Re: Mehrere Text-Dateien in ein TMemo?
 
Habe jetzt Dein Code eingefügt. Leider immer noch nicht. Der Compiler gibt zurück, daß Memo1 ein undefinierter Bezeichner ist.

Christian Seehase 24. Okt 2003 17:23

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

ich kann ja nun nicht wissen, wie Dein Memo heisst.

BTW: Ich verschieb' den Thread mal. Hat nicht wirklich was mit Internet/IP/LAN zu tun ;-)

mlspider 24. Okt 2003 17:32

Re: Mehrere Text-Dateien in ein TMemo?
 
Erst mal Danke für's Verschieben. Der Bezeichner war schon richtig: Memo1.

Christian Seehase 24. Okt 2003 17:34

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

dann hast Du es in eine normale Prozedur oder Funktion gelegt, und nicht in eine Methode des Formulares.
In diesem Falle musst Du noch das Formular mit angeben, auf dem das Memo liegt.

mlspider 24. Okt 2003 17:39

Re: Mehrere Text-Dateien in ein TMemo?
 
So, auch das habe ich getan. Form2.Memo1. Jetzt meckert der Compiler an der Stelle end; end; Erwartet wird aber end. Geht aber nicht, weil es nach diesen Aufruf eine neue Procedure gibt.

axelf98 24. Okt 2003 17:41

Re: Mehrere Text-Dateien in ein TMemo?
 
hmm.. vielleicht ein end zu viel?

Christian Seehase 24. Okt 2003 17:42

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

dann wirst Du wohl irgendwo ein End; vergessen haben, wo lässt sich ohne Source nicht sagen.
Der Codeschnipsel von oben braucht nur noch einen Header.

mlspider 24. Okt 2003 17:49

Re: Mehrere Text-Dateien in ein TMemo?
 
Habe schon versucht ein end; wegzunehmen. Klappt nicht.

Hier mal der gesamte Code:

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

uses IPWechsler;

{$R *.dfm}

var
  slWork : TStringList;
begin
  slWork := TStringList.Create;
  try
    slWork.LoadFromFile('c:\Apache\xampp\htdocs\secure\ram\');
    Form2.Memo1.Lines.AddStrings(slWork);
  finally
    FreeAndNil(slWork);
  end;
end;




procedure TForm2.Button1Click(Sender: TObject);
begin
 Memo1.lines.loadfromfile('c:\Apache\xampp\htdocs\secure\ram\Charts1.asf')
end;

function changeIP(oldadr,newIp:String): String;
var
s: String;
i : Integer;
begin
s := oldadr;
delete(s,1,pos('//',s)+1); // HTTP:// wegschneiden, man geh davon aus dass es immer auf "//" endet
delete(s,1,pos('/',s)-1); // Die IP wegschnippel ( also bis zum nächsten "/")
result := 'http://' + newIp + s; // HTTP davor dann die IP und dann der rest ...
end;

procedure TForm2.Button2Click(Sender: TObject);
var
i:integer;
begin
 for i := 0 to Memo1.Lines.Count-1 do
    Memo1.lines[i] := changeIP(Memo1.Lines[i],Form1.Edit1.text);
    memo1.Lines.SaveToFile('C:/test.asf');
end;



end.
Wo könnte nun Hase begraben liegen?

Christian Seehase 24. Okt 2003 17:59

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

Du musst das ganze auch in eine Prozedur oder Funktion legen, und nicht einfach nur reinkopieren.
Ich sag' doch, dass der Header fehlt.

Ausserdem wird auch das hier nicht funktionieren:

Delphi-Quellcode:
slWork.LoadFromFile('c:\Apache\xampp\htdocs\secure\ram\');
Da steht keine Datei die geladen werden soll.
Du musst das für jede Datei einzel aufrufen.

mlspider 24. Okt 2003 18:04

Re: Mehrere Text-Dateien in ein TMemo?
 
Sorry, aber könnte ich die Sache mit den Ereignis OnCreate oder OnClick aufrufen, oder wie hast Du das mit dem Header gemeint?

Christian Seehase 24. Okt 2003 18:07

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

richtig.
Irgendwo muss es ja drinstehen, sonst kannst Du es nicht aufrufen.
Ob das nun eine Methode (Prozedur oder Funktion einer Klasse) oder eine einfache Prozedur oder Funktion ist spielt keine Rolle.

mlspider 24. Okt 2003 18:19

Re: Mehrere Text-Dateien in ein TMemo?
 
OK, ich habe jetzt ein Button hinzugefügt und über das OnClick Ereignis Deinen Code eingesetzt. Funktioniert perfekt. Nur leider will der Rest nicht mehr, also der IP-Wechsel funktionieren.

Muß jetzt der vorhandene Code modifiziert werden?

PS: Ich hoffe, ich falle Dir nicht all zu sehr auf die Nerven!

Christian Seehase 24. Okt 2003 18:28

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

Zitat:

Zitat von Christian Seehase
Du musst das für jede Datei einzel aufrufen.

also wohl am besten in einer Schleife.

Was jetzt an dem Rest nicht mehr funktionieren soll kann ich so allerdings nicht nachvollziehen.

mlspider 24. Okt 2003 18:47

Re: Mehrere Text-Dateien in ein TMemo?
 
Jetzt wird alles korrekt ausgeführt, allerdings wird jetzt in jeder in dem Memo geöffneten Datien alle Zeilen geschrieben:


"http://11111111111111/secure/mp3/Titel1.wma"
"http://11111111111111/secure/MP3/Titel2.wma"
"http://11111111111111/secure/MP3/Titel3.wma"
"http://11111111111111/secure/MP3/Titel4.wma"


realisiert wurde das so:

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
var
i:integer;
begin
 for i := 0 to Memo1.Lines.Count-1 do
    Memo1.lines[i] := changeIP(Memo1.Lines[i],Edit1.text);
    memo1.Lines.SaveToFile('C:/test1.asf');
    Memo1.lines[i] := changeIP(Memo1.Lines[i],Edit1.text);
    memo1.Lines.SaveToFile('C:/test2.asf');
    Memo1.lines[i] := changeIP(Memo1.Lines[i],Edit1.text);
    memo1.Lines.SaveToFile('C:/test3.asf');
    Memo1.lines[i] := changeIP(Memo1.Lines[i],Edit1.text);
    memo1.Lines.SaveToFile('C:/test4.asf');
end;

Christian Seehase 24. Okt 2003 20:29

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

ich schlage vor, dass Du noch einmal darüber nachdenkst, wie das Programm ablaufen muss, also wann muss was passieren.
Das müsste sich meiner Ansicht nach aus dem
"Was will ich haben" ./. "Was bekomme ich"
ergeben.

mlspider 24. Okt 2003 20:39

Re: Mehrere Text-Dateien in ein TMemo?
 
Grundüberlegung ist die: Es werden mehrere einzeilige asf-Dateien in eine Memo-Komponente geladen. Der nächste Schritt wäre die nach "http://" erscheinende IP auszuschneiden und den Rest zu behalten.
Anschließend sollen alle im Memo geladenen Dateien mit der neuen Ip ersetzt werden. Und zum Schluß sollen die asf-Dateien wieder mit der neuen IP überschrieben werden. Das heißt: jeweils nur eine Zeile pro Datei, wie Sie geladen wurde. :wall:

Christian Seehase 24. Okt 2003 20:42

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

warum liest Du nicht eine Zeile ein (entspricht ja, wenn ich das richtig verstanden habe eine Datei), bearbeitest sie, und schreibst sie dann, einzeln, wieder zurück?
Oder hab' ich da jetzt irgendetwas missverstanden?

mlspider 24. Okt 2003 20:49

Re: Mehrere Text-Dateien in ein TMemo?
 
Weil es sich um mehrere hundert Dateien handelt. Wie kann ich denn nun nach dem erfolgreichen IP-Wechsel (Dank Deines Code), auch jede einzelne Zeile im Memo auch in einer Datei speichern, ohne das alle Zeilen in jeder Datei steht?

Christian Seehase 24. Okt 2003 21:07

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

ich hoffe Dich jetzt richtig verstanden zu haben:
Statt Memo1.Lines.SaveToFile aufzurufen, machst Du es umgekehrt wie beim einlesen.
Du übergibst Zeile für Zeile an eine TStringList und schreibst die dann.

mlspider 24. Okt 2003 21:14

Re: Mehrere Text-Dateien in ein TMemo?
 
Schön, hört sich einfach an. Wäre aber wiederum lieb, Du würdest mir ein kleines Code-Beispiel geben.

Danke!!!

Christian Seehase 24. Okt 2003 21:19

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

die Routine vom Einlesen umzudrehen, solltest Du aber inzwischen auch so hinbekommen.

mlspider 24. Okt 2003 21:24

Re: Mehrere Text-Dateien in ein TMemo?
 
Irgendwie kann ich nicht mehr folgen. Gib mir bitte mal ein Code-Beispiel für die Umkehr

Christian Seehase 24. Okt 2003 21:28

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

Delphi-Quellcode:
slWork.Text := Memo1.Lines[i];
slWork.SaveToFile(UndHierImmerDerEntsprechendeDateiPfad)
damit müsstest Du eigentlich klarkommen.
Das "schmückende Beiwerk" steht ja schon weiter oben.

mlspider 24. Okt 2003 21:38

Re: Mehrere Text-Dateien in ein TMemo?
 
Danke erstmal für Deine Mühen!!!!! Werde es jetzt ausprobieren. Allerdings der Blick auf meine Uhr straft mich schon wieder. Ich muß ja wenigstens ein paar Stunden schlafen, an sonsten wird mein Chef morgen irre, wenn meine Augen zufallen.

Wenn Du willst, gib mir mal Deine E-Mail. Meine lautet: mlspider@web.de


Gruß Mario

Christian Seehase 24. Okt 2003 21:46

Re: Mehrere Text-Dateien in ein TMemo?
 
Moin mlspider,

guckst Du hier (unten in der Leiste) ;-)

Code:
               ||
               ||
               ||
              \  /
               \/


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