Autor Beitrag
Mausii
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 19.05.10 18:53 
Hallo zusammen,

ich habe ein kleines Problem und zwar möchte ich wenn ich auf einen Button drücken, dass sich dort ein OpenDialog öfnnet und ich ein Textdokument in ein Memo einlesen kann. Es funktioniert eigentlich... Bis auf, dass ich nur Dokumente mit der Endung .txt ein
lesen kann. Außerdem soll er das Ganze zeilenweise einlesen und nicht buchstabenweise. Könnt ihr mir helfen?

Hier mein Quellcode
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
procedure TData.LoadFromFile;
var
  iFileHandle : Integer;
  iFileLength : Integer;
  iBytesRead  : Integer;
  Buffer      : PChar;
  i           : Integer;
  sTimeStamp  : string;
begin
  if FU_ASTM_Sender.FrmASTM_Sender.OpenDialog1.Execute then
  begin
    try
      iFileHandle := SysUtils.FileOpen(FU_ASTM_Sender.FrmASTM_Sender.OpenDialog1.FileName, fmOpenRead);
      iFileLength := SysUtils.FileSeek(iFileHandle,0,2);
      FileSeek(iFileHandle,0,0);
      Buffer := PChar(System.AllocMem(iFileLength + 1));
      iBytesRead := SysUtils.FileRead(iFileHandle, Buffer^, iFileLength);
      sTimeStamp := FormatDateTime('YYYYMMDDHHNNSS',now);
      FU_ASTM_Sender.FrmASTM_Sender.ASTM.lines.Clear;
      FileClose(iFileHandle);
      for i := 0 to iBytesRead-1 do
      begin
      if i = 0 then
        FU_ASTM_Sender.FrmASTM_Sender.ASTM.lines.Add(StringReplace(Buffer[i],'#TS#',sTimeStamp,[rfIgnoreCase]))
      else
        FU_ASTM_Sender.FrmASTM_Sender.ASTM.lines.Add(Buffer[i]);
  end;
    finally
      FreeMem(Buffer);
    end;
  end;
end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 19.05.2010 um 23:31
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 19.05.10 18:57 
Wie wäre es mit der Methode LoadFromFile von TMemo? Und was für Dateien außer Textdateien willst du noch laden? Kommen in der Datei Steuerzeichen vor, wird an der Stelle das Laden bzw. das anzeigen abgebrochen, weil ein Memo keine Steuerzeichen darstellen kann.
Georg08
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155
Erhaltene Danke: 6

Win XP
Delphi 7.0 Personal
BeitragVerfasst: Mi 19.05.10 19:22 
Also so spontan würde mir die Lösung von Luckie einfallen oder die umständlichere AssignFile-Methode

EDIT:
Ich habe mal beide Methoden in ein PRogramm gepackt... (Dateianhang)
Einloggen, um Attachments anzusehen!
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mi 19.05.10 20:09 
user profile iconMausii hat folgendes geschrieben Zum zitierten Posting springen:
ich habe ein kleines Problem und zwar möchte ich wenn ich auf einen Button drücken, dass sich dort ein OpenDialog öfnnet und ich ein Textdokument in ein Memo einlesen kann. Es funktioniert eigentlich... Bis auf, dass ich nur Dokumente mit der Endung .txt ein lesen kann.


Zu der Auswahl von nur .txt (googlen hilft):

www.delphibasics.co....asp?Name=TOpenDialog hat folgendes geschrieben:
Filter property
This allows only certain file types to be displayed and selectable. The filter text is displayed in a drop down below the file name field. The following example selects for text files only:

openDialog.Filter := 'Text files only|*.txt';

The drop down dialog shows the description before the | separator. After the separator, you define a mask that selects the files you want.

openDialog.Filter := 'Text and Word files only|*.txt;*.doc';

Above we have allowed two different file types, separated by a ;.

openDialog.Filter := 'Text files|*.txt|Word files|*.doc';

Above we have allowed text and Word files as two options in the drop down list.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)