Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Textdatei in StringGrid anzeigen? (https://www.delphipraxis.net/103392-textdatei-stringgrid-anzeigen.html)

DeddyH 15. Nov 2007 12:02

Re: Textdatei in StringGrid anzeigen?
 
Die Datei ist schon komplett eingelesen wordem, aber durch mein C & P ist die Limitierung auf Index 1 übriggeblieben. Du musst also nur nach dem Einlesen eine Schleife einbauen und die [1] durch [Schleifenvariable] ersetzen, dann sollte es schon gehen.

Borschti 15. Nov 2007 12:04

Re: Textdatei in StringGrid anzeigen?
 
Hat sich erledigt, Augen aufmachen hilft ;)

marabu 15. Nov 2007 12:09

Re: Textdatei in StringGrid anzeigen?
 
Hallo Alex,

mit dem Code aus dem vorigen Beitrag wird die erste Zeile aus deinen Beispieldaten so verarbeitet, dass die Straße "Kühle Bäume 12" auf drei Spalten verteilt wird - aber das wirst du später noch irgendwann merken.

Delphi-Quellcode:
procedure FillGrid(sg: TStringGrid; lines: TStrings; delim: Char);
var
  i: Integer;
begin
  for i := 0 to Pred(lines.Count) do
    Explode(lines[i], delim, sg.Rows[sg.FixedRows + i]);
end;


var
  sl: TStringList;
begin
  if OpenDialog.Execute then
  begin
    sl := TStringList.Create;
    try
      sl.LoadFromFile(OpenDialog.FileName); //ausgewählte Datei einlesen
      FillGrid(StringGrid, sl, ';');
    finally
      sl.Free;
    end;
  end;
end;
Getippt und nicht getestet.

Freundliche Grüße

Borschti 15. Nov 2007 12:49

Re: Textdatei in StringGrid anzeigen?
 
Danke für den Code, das das Programm dann Leerzeichen auch als Trennzeichen aufgenommen hätte wäre in dem Moment auch kein Beinbruch gewesen, aber wenn es nicht so ist, ist es natürlich besser ;)

Aber eine Frage bleibt mir noch...was muss ich denn im uses Abschnitt einbinden damit Delphi was mit Explode anfangen kann?

DeddyH 15. Nov 2007 12:52

Re: Textdatei in StringGrid anzeigen?
 
Kopier die oben verlinkte Funktion in Deine Unit.

Borschti 15. Nov 2007 13:07

Re: Textdatei in StringGrid anzeigen?
 
Ja, hab ich aber er zeigt mir die Fehlermeldung "Undefinierter Bezeichner:'Explode'" an.

DeddyH 15. Nov 2007 13:10

Re: Textdatei in StringGrid anzeigen?
 
Dann schreib mal als letzte Zeile vor "implementation"
Delphi-Quellcode:
procedure Explode(const s, delimiter: String; items: TStrings);

Borschti 15. Nov 2007 13:28

Re: Textdatei in StringGrid anzeigen?
 
Hab ich gemacht der Fehler bleibt aber weiterhin bestehen.

Bisd du dir sicher das ich nichts im uses Abschnitt einbinden muss?

DeddyH 15. Nov 2007 13:30

Re: Textdatei in StringGrid anzeigen?
 
Zeig doch mal die Unit.

Borschti 15. Nov 2007 13:40

Re: Textdatei in StringGrid anzeigen?
 
Hier bitte, also da sollten die für die Sache wichtigen Dinge zu sehen sein ;)
Ich Habe
Delphi-Quellcode:
procedure Explode(const s, delimiter: String; items: TStrings);
an verschieden stellen eingesetzt ich markier einfach mal die entsprechenden Stellen mit einem Kommentar.


Delphi-Quellcode:
unit UnStringGrid;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, StrUtils, Printers, ClipBrd, Grids;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    OpenDialog1: TOpenDialog;
    PrinterSetupDialog1: TPrinterSetupDialog;
    MainMenu1: TMainMenu;
    datei: TMenuItem;
    drucken: TMenuItem;
    ffnen1: TMenuItem;
    Druckereinstellungen1: TMenuItem;
    Drucken1: TMenuItem;
    PrintDialog1: TPrintDialog;
    AlleFelderlschen1: TMenuItem;
    StringGrid1: TStringGrid;
    Beenden1: TMenuItem;
    procedure ffnen1Click(Sender: TObject);
    procedure Druckereinstellungen1Click(Sender: TObject);
    procedure Drucken1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Beenden1Click(Sender: TObject);
    //Hier
  private
    { Private-Deklarationen }

  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
// und hier so wie du gesagt hast.
implementation

 
{$R *.dfm}

procedure FillGrid(sg: TStringGrid; lines: TStrings; delim: Char);
var
  i: Integer;
begin
  for i := 0 to Pred(lines.Count) do
    Explode(lines[i], delim, sg.Rows[sg.FixedRows + i]);
end;


procedure TForm1.ffnen1Click(Sender: TObject);
var
  sl: TStringList;
begin
  if OpenDialog1.Execute then
  begin
    sl := TStringList.Create;
    try
      sl.LoadFromFile(OpenDialog1.FileName);
      FillGrid(StringGrid1, sl, ';');
    finally
      sl.Free;
    end;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 Uhr.
Seite 2 von 3     12 3      

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