AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Stream to String / String to Stream ? möglich wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Stream to String / String to Stream ? möglich wie?

Ein Thema von Schlingel · begonnen am 2. Mai 2003 · letzter Beitrag vom 2. Mai 2003
Antwort Antwort
Schlingel

Registriert seit: 15. Feb 2003
Ort: Österreich
67 Beiträge
 
Delphi XE2 Professional
 
#1

Stream to String / String to Stream ? möglich wie?

  Alt 2. Mai 2003, 10:56
Hallo

Problemstellung:

Bisher:

Write : Rich.Edit.Text --> Stringvariable --> File
Read : File --> Stringvariable --> Rich.Edit.Text

Nun wollte ich die RxRichEdit - Komponente einsetzen um auch kleine Graphiken
im RichEdit-Fenster mittels Drag&Drop einzufügen bzw. anzuzeigen.

Leider ist bis hierher kein Problem, aber... jetzt stellt sich ein Problem daß ich
damit ich Rückwärts-Kompatibel bleibe, den Inhalt des RxRichText-Fensters auch weiterhin
auf die bisherige Stringvariable abbilden müsste.

Ich dachte mit .LoadToStream / SaveToStream müsste dies möglich sein. ?

Auch trotz Intensiv-Studium verschiedenster Foren und der Delhi-Hilfe bin ich nicht in der
Lage Stream --> String --> Stream zu lösen.

hat jemand einen Tipp dazu?

Danke im Vorraus
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 2. Mai 2003, 13:03
Moin Schlingel,

eine Variable von Typ String in einen Stream zu schreiben, bzw. daraus zu lesen geht so:

Delphi-Quellcode:
var
  sBuffer : string;
  fsIN : TFileStream;
  fsOUT : TFileStream;

begin
  fsIN := TFileStream.Create('Pfad der zu lesenden Datei',fmOpenRead);
  fsOUT := TFileStream.Create('Pfad der zu schreibenden Datei',fmOpenWrite or fmCreate);
  try
    // Platz reservieren
    sBuffer := StringOfChar(#00,fsIN.Size);
    fsIN.Read(sBuffer[1],length(sBuffer));
    fsOUT.Write(sBuffer[1],length(sBuffer));
  finally
    FreeAndNil(fsIN);
    FreeAndNil(fsOUT);
  end;
end;
Da der Buffer nicht typisiert ist, ist die Angabe von [1] wichtig. Dies ist die Stelle ab der der String geschrieben wird, bzw. an der in den String eingelesen wird.
Man kann auch andere Werte angeben, um z.B. nur bestimmte Teile zu schreiben, bzw. an bestimmte Stellen einzulesen.
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
Schlingel

Registriert seit: 15. Feb 2003
Ort: Österreich
67 Beiträge
 
Delphi XE2 Professional
 
#3

Stream-Problem ..

  Alt 2. Mai 2003, 13:32
Hallo Chris

damke für deine message... leider lösst deine Variante nicht ganz mein Problem.

Ich würde eine Stream to String / String to Stream Lösung benötigen, die ohne Umweg über ein File zu bewerkstelligen wäre.

mfg

Schlingel
  Mit Zitat antworten Zitat
Neo2084

Registriert seit: 1. Mai 2003
Ort: Thüringen
35 Beiträge
 
Delphi 5 Professional
 
#4

Re: Stream-Problem ..

  Alt 2. Mai 2003, 14:46
Hallo Schlingel,

Zitat von Schlingel:
Ich würde eine Stream to String / String to Stream Lösung benötigen, die ohne Umweg über ein File zu bewerkstelligen wäre.
dan nimm doch einfach tMemoryStream statt tFileStream,
das von Chris beschriebene funktioniert damit genau so.

Gruß Jan
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 2. Mai 2003, 15:54
Moin Zusammen,

oder anders gesagt:
Welchen Stream man benutzt ist egal.

Einen Tip hab' ich aber noch zur Eigenschaft Text von RichEdit usw.

Der direkte Zugriff darauf ist sehr langsam. Man kommt erheblich besser weg, wenn man den String, den man TEXT zuweisen will in einen MemoryStream schreibt, und dann aus diesem mittels LoadFromStream liest.
Beispiel:
ca. 3,8MB grosse Textdatei
- Zuweisung an Text: Manuell abgebrochen nach 4 Minuten.
- Umweg über Stream: In ca. 3 Sekunden geladen.
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


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 13: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