Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Eine Textdatei in eine Varriable einlesen (https://www.delphipraxis.net/5514-eine-textdatei-eine-varriable-einlesen.html)

MrKnogge 9. Jun 2003 20:05


Eine Textdatei in eine Varriable einlesen
 
Hi zusammen,

Ich hab folgenden Code gefunden, er sorgt dafür, das ich
Dateien per Drad n Drop laden kann.

Delphi-Quellcode:
procedure TForm1.GetDroppedFileNames(var msg : TWMDropFiles);

var
sFileName   : string;
dwFileCount : cardinal;
i           : cardinal;
dwReqdLength : cardinal;
begin
  dwFileCount := DragQueryFile(msg.Drop,$FFFFFFFF,nil,0);
  for i := 0 to dwFileCount - 1 do
  begin
    dwReqdLength := DragQueryFile(msg.Drop,i,nil,1);
    sFileName := StringOfChar(#00,dwReqdLength+1);
    DragQueryFile(msg.Drop,i,PChar(sFileName),dwReqdLength+1);
    SynEdit1.Lines.LoadFromFile(sFileName);
  end;
end;
Nun möchte ich aber den Text an der Cursor stelle einfügen,
(var temp : string)
Delphi-Quellcode:
also mit SynEdit1.Seltext := temp
Meine frage, wie bekomme ich die Datei "sFileName" in temp geladen ?

Ich hab schon probiert temp als Memo zu deklarieren, doch wenn ich dann
eine Datei draufziehe, dannbricht das Programm ab.
Delphi-Quellcode:
procedure TForm1.GetDroppedFileNames(var msg : TWMDropFiles);
var    sFileName   : string;
        dwFileCount : cardinal;
        i           : cardinal;
        dwReqdLength : cardinal;
        Memo1 : TMemo;
begin
  dwFileCount := DragQueryFile(msg.Drop,$FFFFFFFF,nil,0);
  for i := 0 to dwFileCount - 1 do
  begin
    dwReqdLength := DragQueryFile(msg.Drop,i,nil,1);
    sFileName   := StringOfChar(#00,dwReqdLength+1);
    DragQueryFile(msg.Drop,i,PChar(sFileName),dwReqdLength+1);
    Memo1.Lines.LoadFromFile(sFileName); // <-- HIER BRICHT DAS PROGRAMM AB
    SynEdit1.SelText := Memo1.Lines.Text;
  end;
end;

Weis von euch einer Rat ?

Luckie 9. Jun 2003 20:14

Was fuchtelst du da mit dem Memo rum?

Entweder nimm eine StringListe oder lies die Datei mit ReadLn in eine String Variable ein:
Delphi-Quellcode:
var
  f : TextFile;
  s, s1 : String;
begin
  ...;
  AssignFile(f, Filename);
  Reset(f);
  while not EOF(f) do
  begin
    ReadLn(f, s1);
    s := s + s1;
  end;
  Closefile(f);
  SynEdit.Seltext := s;
Jetzt mal so aus dem Kopf hier reingehackt.

MrKnogge 9. Jun 2003 20:17

thx :hello:

Luckie 9. Jun 2003 20:21

sag blos, das ist auf Anhieb gelaufen und hat auch gleich funktioniert? :shock:

MrKnogge 9. Jun 2003 20:30

nicht gans so wie es sollte, musste noch 6 Zeichen hinzufügen :D
Delphi-Quellcode:
   .
   .
   .
ReadLn(f, s1);
s := s + #10 + s1;
   .
   .
   .
nochmal thx

Luckie 9. Jun 2003 20:32

Gut der Zeilenumbruch. dann machen wir es bare gleich ganz richtig:
Delphi-Quellcode:
s := s +#13#10 + s1;

MrKnogge 9. Jun 2003 20:41

Was genau ist eigentlich der unterschied zwischen #10 und #13 oder eben #10#13

#13 ist doch der Asci-Code für ddie Enter Taste oder ?
Aber was ist #10 ?

Chewie 9. Jun 2003 20:47

Ein Zeilenumbruch in Windows ist definiert als die ASCII-Zeichen 13 und 10. Die meisten Programme können aber auch mit dem UNIX- oder MAC OS-Format umgehen, da ist es nur das Zeichen #10 bzw. #13.

MrKnogge 9. Jun 2003 20:58

Weiss einer wie ich einen automatischen
Zeilenumbruch hinbekomme, also wie im Notepad.

Wie findet man heraus, wann die Zeile länger wird,
als das Programm breit ist :shock:

Luckie 9. Jun 2003 21:01

#13 ist CR -> CarriageReturn (Wagenrücklauf) und
#10 ist LF -> LineFeed (Zeilenvorschub).

@MrKnogge: neue Frage , neuer Thread.

Geschlossen.


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