Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - String Laden


Syngel Kid - Mo 29.12.03 22:09
Titel: String Laden
Wie kann man Ein Textdokument (.txt) direkt in eine String
Variable Laden??


Anonymous - Mo 29.12.03 23:37

Direkt - Überhaupt nicht

aber über Umwege :)

deinstring ist eine Variable vom Typ string.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
 stream: TFileStream;
begin
 stream := TFileStream.Create('foo.txt', fmOpenRead);
 setlength(deinstring, stream.Size);
 stream.Read(pointer(deinstring)^, stream.Size);
 stream.free;
end;


Wolff68 - Di 30.12.03 00:25

Oder Du benutzt die gute alte Methode über TextFile.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var
  f : TextFile;
  s : String;
begin
  AssignFile(f,'C:\Test.txt');
  Reset(f);
  ReadLn(f,s);
  CloseFile(f);

  Edit1.Text := s;
end;

Dies liest Dir die erste Zeile der Datei in die Stringvariable ein.
(Und gibt das ganze im Edit1 aus)

Schau Dir am besten mal die Beispiele hierzu in der Delphi-Hilfe an.


Anonymous - Di 30.12.03 01:08

Das ist aber ziemlich unvorteilhaft, wenn man die gesamte Datei einlesen will. Aber es ist ja nicht sicher was er will ;)


Wolff68 - Di 30.12.03 13:02

obbschtkuche hat folgendes geschrieben:
... Aber es ist ja nicht sicher was er will ;)


Eben drum hab ich die Variante zum Einlesen der ersten Zeile auch reingesetzt. Der Vollständigkeit halber und da sie einen komplett anderen Weg geht als Deine Lösung.


Syngel Kid - Di 30.12.03 22:38

Ich wollte eine .doc in ein Memo Laden....
aber da steht nur: 'ÐÏࡱá' und dabei ist das dokument 20 mal so lang.
Aber das war woll nicht so eine gute idee von mir... :wink:


Anonymous - Di 30.12.03 22:58

.doc ist kein ASCII-Text, TMemo ist aber nur dafür ausgelegt. TRichedit kann noch Rich Text, aber für .doc ist mir nichts bekannt.
Dass das memo nur so wenig anzeigt, liegt daran, dass der Text beim ersten Vorkommen von #0 immer abgebrochen wird (0-terminierter String)


Syngel Kid - Mi 31.12.03 11:24

ich weisss, ich weiss, aber ich möchte gerne alles in eine Memo laden können auch waves. Aber es kjommt immer nur praktisch die selben 4 - 5 Buchstaben.


Anonymous - Mi 31.12.03 12:41

da würdest du die Datei am besten byteweise einlesen und jedes byte in Hex umwandeln und dann darstellen.


Syngel Kid - Mi 31.12.03 13:46

Und wie stell ich des an??


Wolff68 - Mi 31.12.03 17:57

Schau mal nach einem Hex-Editor.

Ansonsten vielleicht einen neuen Thread aufmachen. Denn das hat dann nichts mehr mit "String laden" zu tun.