Hallo alle zusammen,
ich habe eine Frage und zwar ist es möglich eine Textdatei bei einer Listbox bei Delphi einzufügen, also zum Beispiel ein geschriebener Text in einer Word-Datei in die Listbox einzufügen.
Meine Idee wäre gewesen das über Listbox.items.add(’…’); zu machen.
Allerdings wäre das sehr aufwendig, da man bei jeder neuen Zeile wieder Listbox.items.add(’…’) schreiben müsste.
Deswegen wollte ich fragen, ob Ihr eventuell eine Möglichkeit kenn, dieses Verfahren zu umgehen.
Mit freundlichen Grüßen
John
Hallo John!
Mit einer Stringlist, in die dann Text aus einer Textdatei lädst, müsste es gehen.
Eine Word-Datei wird sehr viel schwieriger, da sie in einem speziellen Format abgespeichert ist.
Code kann ich Dir im Moment keinen zusenden, da ich unterwegs bin und nur den Laptop dabei habe.
Michael.
Hallo!
Deine Idee ist nicht ganz falsch!
Versuche die Textdatei in eine Stringlist zu laden und per for-to-Anweisung den Inhalt in die Listbox zu schreiben! Mit Word dateien wird das aber etwas schwer, da du es hier nicht mehr mit Unicode-Text zu tun hast!
MFG Wii360
Hallo John,
hab mich zwar schon seehhrr lange nicht mehr mit Delphi auseinandergesetzt, würde aber mal sagen, dafür ist die ListBox nicht da,nimm doch einfach ein MemoFeld, glaube das ist besser.
Grüsse
Hallo John,
Du kannst den Inhalt einer Listbox z.B. ueber „assign“ setzen. Siehe folgendes Beispiel (das Formular dazu kannst Du sicher selbst schneller erstellen, als ich es per copy/paste hier einfuegen kann).
Viele Gruesse
Veit
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TWordDocumentStrings = class(TStringList)
private
procedure fillSampleData;
function isWordDocument(const fileName: string): boolean;
public
constructor Create(const fileName: TFilename);
procedure LoadFromFile(const fileName: string); override;
end;
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
items: TWordDocumentStrings;
begin
items:=TWordDocumentStrings.Create(‚meinworddocument.doc‘);
ListBox1.Items.Assign(items);
items.free;
end;
{ TWordDocumentItems }
constructor TWordDocumentStrings.Create(const fileName: TFilename);
begin
inherited Create;
//hier Dein Worddokument laden
LoadFromFile(fileName);
//fuer das Beispiel zufaellige daten
fillSampleData;
end;
function TWordDocumentStrings.isWordDocument(const fileName: string): boolean;
var
len1: integer;
suffix: string;
begin
//todo: sinnvollere ueberpruefung ueberlegen
len1:=length(fileName);
suffix:=copy(fileName,len1-2,3);
result:=suffix=‚doc‘;
end;
procedure TWordDocumentStrings.LoadFromFile(const fileName: string);
begin
if (isWordDocument(fileName)) then begin
//word document laden
//da kann ich nicht helfen - word fasse ich nicht an
end else begin
inherited LoadFromFile(fileName);
end;
end;
procedure TWordDocumentStrings.fillSampleData;
var
i,j: integer;
s: string;
begin
i:=0;
s:=’’;
while i
Kann leider nicht (mehr) helfen. Bin zu lange raus aus dem Geschäft. Sorry.
Gruß Mathias
Hallo John,
beschreibe mal etwas genauer, was du möchtest. Soll das Einfügen per Copy and Paste geschehen. Das Lesen einer Word-Datei ist ja nicht so einfach. Vielleicht bringt dich ja auch schon das Memofeld weiter.
Gruß
Andreas