AGB  ·  Datenschutz  ·  Impressum  







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

Eine Datei in 3 Memos laden

Ein Thema von TheMiller · begonnen am 30. Dez 2004 · letzter Beitrag vom 31. Dez 2004
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von hibbert
hibbert

Registriert seit: 26. Aug 2003
Ort: Berlin
262 Beiträge
 
Delphi 2005 Personal
 
#11

Re: Eine Datei in 3 Memos laden

  Alt 30. Dez 2004, 21:31
wie wäre es denn, wenn du den Text in eine Variable lädst.
und dann sollte folgendes gehen:
Delphi-Quellcode:
var text,textM1,textM2,textM2:string;
i:integer;
begin
i:=pos('[/\Memo1/\]',text);
textM1 := copy(text,1,i);
delete(text,1,i + 10);
i:=pos('[/\Memo2/\]',text);
textM2 := copy(text,1,i);
delete(text,1,i + 10);
textM3 := text;
(ungetestet !!)
den 3. seperator kannst du ja weglassen, denn dann kann ja nurnoch was für das letzte memo kommen...

ist nur ein lösungs ansatz, hoffe das ich helfen konnte.

hibbert
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#12

Re: Eine Datei in 3 Memos laden

  Alt 30. Dez 2004, 21:31
aber wenn da auch zeilentrennzeichen sind?

ich würde meine methode oben zum laufen bringen
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#13

Re: Eine Datei in 3 Memos laden

  Alt 30. Dez 2004, 23:19
Danke, ich werde auch dies mal ausprobieren...

@glkgereon: Ja, aber wie...
  Mit Zitat antworten Zitat
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#14

Re: Eine Datei in 3 Memos laden

  Alt 30. Dez 2004, 23:43
hm wieso machsts nich mit ner ini-Datei?
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Eine Datei in 3 Memos laden

  Alt 31. Dez 2004, 00:00
Zitat von Wuaegner:
hm wieso machsts nich mit ner ini-Datei?
genau:

Delphi-Quellcode:
//speichern
var ini: TIniFile;
begin
  ini := TIniFile.create;
  try
    ini.loadfromfile('...');
    ini.writestring('Memos', 'Memo1', memo1.lines.DelimitedText);
    ini.writestring('Memos', 'Memo2', memo2.lines.DelimitedText);
    ini.writestring('Memos', 'Memo3', memo3.lines.DelimitedText);
  finally
    ini.free;
  end;
end;

//laden
var ini: TIniFile;
begin
  ini := TIniFile.create;
  try
    ini.loadfromfile('...');
    memo1.lines.delimitedtext := ini.readstring('Memos', 'Memo1', '');
    memo2.lines.delimitedtext := ini.readstring('Memos', 'Memo2', '');
    memo3.lines.delimitedtext := ini.readstring('Memos', 'Memo3', '');
  finally
    ini.free;
  end;
end;
so in etwa (ungetestet).

Aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#16

Re: Eine Datei in 3 Memos laden

  Alt 31. Dez 2004, 00:05
Unter Win9x ist die größe von Ini-Dateien auf 32Kb begrenzt, dann müsstest du, falls es größere Datenmengen sind, eine passende Komponente, wie TBigIniFile nehmem.

Aber es geht auch als Textdatei:
Delphi-Quellcode:
procedure WriteMemos(AMemo1, AMemo2, AMemo3: TMemo; const AFilename: String);
var
  SL: TStrings;
begin
  SL := TStringList.Create;
  try
    SL.AddStrings(AMemo1.Lines);
    SL.Add('[/\Memo/\]');
    SL.AddStrings(AMemo2.Lines);
    SL.Add('[/\Memo/\]');
    SL.AddStrings(AMemo3.Lines);
    SL.SaveToFile(AFilename);
  finally
    SL.Free;
  end;
end;

procedure ReadMemos(AMemo1, AMemo2, AMemo3: TMemo; const AFilename: String);
var
  SL: TStrings;
  i,
  Memo: Integer;
begin
  AMemo1.Clear;
  AMemo2.Clear;
  AMemo3.Clear;
  SL := TStringList.Create;
  try
    SL.LoadFromFile(AFilename);
    Memo := 1;
    for i := 0 to SL.Count - 1 do
    begin
      if SL[i] = '[/\Memo/\]then
      begin
        Inc(Memo);
        Continue;
      end;
      case Memo of
        1: AMemo1.Lines.Add(SL[i]);
        2: AMemo2.Lines.Add(SL[i]);
        3: AMemo3.Lines.Add(SL[i]);
      end;
    end;
  finally
    SL.Free;
  end;
end;
Aufruf:
Delphi-Quellcode:
  WriteMemos(Memo1, Memo2, Memo3, 'c:\test.txt');
// und
  ReadMemos(Memo1, Memo2, Memo3, 'c:\test.txt');
Ich sage nicht, dass es die beste Lösung ist, aber sie funktioniert

MfG Pr0g
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#17

Re: Eine Datei in 3 Memos laden

  Alt 31. Dez 2004, 10:45
Hey,

ihr seid klasse. Ich werde alles mal probieren. Aber auf die Idee mit der Ini-Datei hätte ich auch kommen können. Außerdem ist das Ziel-OS WinXP, so dass ich mit der größe keine Probs bekomme.

Danke an alle.

Falls wir uns nicht mehr lesen sollten, wünsche ich euch einen guten Rutsch in 2005!

Bye
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Eine Datei in 3 Memos laden

  Alt 31. Dez 2004, 13:27
Moin DJ-SPM,

vor kurzem hatte ich hier mal eine Methode gepostet, wie man mehrere TRichEdit in eine Datei schreiben, und sie getrennt wieder auslesen kann.
Das funktioniert natürlich auch mit TMemo.

10 Richedit in eine Datei speichern und wieder auslesen
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#19

Re: Eine Datei in 3 Memos laden

  Alt 31. Dez 2004, 13:46
Hi chris,

meinst du diesen Code:

Delphi-Quellcode:
// schreiben
var
  iLen : integer;
  fs : TFileStream;
  ms : TMemoryStream;

begin
  ms := TMemoryStream.Create;
  fs := TFileStream.Create(....,fmCreate);
  try
    ms.Clear;
    RichEdit1.Lines.SaveToStream(ms);
    iLen := ms.Position;
    fs.Write(iLen,4);
    fs.CopyFrom(ms,0);
  finally
    FreeAndNil(fs);
    FreeAndNil(ms);
  end;
end;

// lesen
var
  iLen : integer;
  fs : TFileStream;
  ms : TMemoryStream;

begin
  ms := TMemoryStream.Create;
  fs := TFileStream.Create('c:\temp\riform.txt',fmOpenRead);
  try
    fs.Read(iLen,4);
    ms.Clear;
    ms.CopyFrom(fs,iLen);
    ms.Position := 0;
    RichEdit1.Lines.LoadFromStream(ms);
  finally
    FreeAndNil(fs);
    FreeAndNil(ms);
  end;
end;
Wenn ja, kannst du mir kurz sagen, wo die Seperatoren sind, also, wie der Code funzt?
Danke
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Eine Datei in 3 Memos laden

  Alt 31. Dez 2004, 13:53
Moin DJ-SPM,

nein, ich meinte den Code davor.
Das was Du da gepostet hast ist nur erforderlich, wenn man die, in einem Memo ja nicht vorhandenen, Formatierungen mit speichern will.
Das Prinzip bleibt aber gleich.
Wie ich in dem genannten Thread weiter oben beschrieben hatte:
Es wird erst die Länge gespeichert, dann der Inhalt.

Bei Auslesen liest man dann also die Länge ein, reserviert sich in einem Buffer entsprechend Platz, und liest ein.

Das Beispiel bezieht sich nur auf eine Datei, aber in einer Schleife gehen dann auch mehrere.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 10:18 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