AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mehrere Textdateien aus Opendialog heraus ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Textdateien aus Opendialog heraus ausführen

Ein Thema von illbytes · begonnen am 23. Nov 2006 · letzter Beitrag vom 29. Nov 2006
Antwort Antwort
Seite 2 von 3     12 3      
illbytes

Registriert seit: 22. Nov 2006
14 Beiträge
 
Delphi 3 Professional
 
#11

Re: Mehrere Textdateien aus Opendialog heraus ausführen

  Alt 27. Nov 2006, 16:24
Hallo Marabu,

so wie im siebten Posting nur das ich zwischendurch unter dem Memo1 nach Stringpattern suche und an entsprechender Stelle den String nach n Zeichen vom Zeilenanfang mit k Stellen auslese und ihn einem TString Grid übergebe.

Wenn noch was fehlt poste ich das noch rein.

Schönen Gruß
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: Mehrere Textdateien aus Opendialog heraus ausführen

  Alt 27. Nov 2006, 16:37
Prüfe doch mal, ob du auch jede Datei schließt, die du zuvor geöffnet hast.
  Mit Zitat antworten Zitat
illbytes

Registriert seit: 22. Nov 2006
14 Beiträge
 
Delphi 3 Professional
 
#13

Re: Mehrere Textdateien aus Opendialog heraus ausführen

  Alt 27. Nov 2006, 16:55
Hallo,

ich habe das CloseFile(Datei); mal ein End nach oben verschoben Resultat es wird nur noch ein Zeilenfragment eingelesen.

Ist doch richtig das ich der Variablen Datei die Files[j] des OpenDialog1 zuweise?

Delphi-Quellcode:
if OpenDialog1.Execute then
     for j := 0 to opendialog1.Files.Count-1 do
     begin
       AssignFile(Datei, OpenDialog1.Files[j]);
    {$I-}
       .
       .
und wenn ich dann CloseFile(Datei) aufrufe somit implizit auch die Files[j] des OpenDialog1 geschlossen werden.

Delphi-Quellcode:
 end;
       Reihe:=Reihe+1;
       Edit1.Text:=IntToStr(Reihe);
       CloseFile(Datei);
end;
end;
ich probier noch etwas rum das CloseFile(Datei)Kommando im Quelltext zu verschieben.

Ansonsten weiss ich nicht wie ich sehen kann ob die Datei offen oder geschlossen ist.

hab schon länger an dem Problem gefummelt. Aber ohne Erfolg. :-(
  Mit Zitat antworten Zitat
illbytes

Registriert seit: 22. Nov 2006
14 Beiträge
 
Delphi 3 Professional
 
#14

Re: Mehrere Textdateien aus Opendialog heraus ausführen

  Alt 29. Nov 2006, 15:49
Hallo Miteinander,

ich habe nun einige Tage versucht das Problem in den Griff zu bekommen.

Mit dem untenstehenden Testprogramm bin ich nach wie vor auf ca 150 Dateien a 2 KB die eingelesen werden können gekommen.

Will ich mehr als 200 Dateien einlesen, dann wird nichts aber auch gar nichts im Memo und in der
TListBox angezeigt. Und das Ganze ohne eine Message oder sonstige Meldungen.

Ab dem Memobereich findet dann bei mir in meinem Programm die Weitere Verarbeitung statt.

Es muss doch möglich sein mit diesem Grundgerüst von Code bis zu 200 Dateien oder über 200 Dateien bis ca. 2500 oder mehr einzulesen.

Ich denke das es bestimmt jemanden gibt, der mehr als 150 Dateien in einem Batch einliest.

Tests mit handelsüblichen Büroanwendungsprogrammen haben aber auch erstaunliches zu Tage gebracht
z. B. max. 41 Dateien die eingelesen werden.

Hier nun das Testprogramm:

Delphi-Quellcode:
unit Textread;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    Edit1: TEdit;
    ListBox1: TListBox;
    BitBtn2: TBitBtn;
    Label1: TLabel;

    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  

implementation

{$R *.DFM}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Datei : Textfile;
  Zeilenpuffer : String;
  j : integer;

begin
  if OpenDialog1.Execute then
     for j := 0 to opendialog1.Files.Count-1 do
     begin
        AssignFile(Datei, OpenDialog1.Files[j]);
       ListBox1.Items.Add(IntToStr(j+1)+' '+OpenDialog1.Files[j]);
      {$I-}
         Reset(Datei);
      {$I+}
         if IOResult <> 0 then
         begin
          MessageDlg('Fehler beim Zugriff auf die Datei', mtWarning, [mbOk], 0);
          exit;
          halt
         end
         else
           while not EOF(Datei)do
             Begin
               Readln( Datei, Zeilenpuffer);
               Memo1.Lines.Add(Zeilenpuffer);
             end;
       {Reihe:=Reihe+1;}
       Edit1.Text:=IntToStr(Opendialog1.Files.Count);
       CloseFile(Datei);
     end; {End OpenDialog1}
end; {End BitBtn1.Click}

procedure TForm1.BitBtn2Click(Sender: TObject);
var
i : longint;

begin
 Memo1.Lines.Clear;
   with ListBox1.Items do
      begin
        for i:=0 to ListBox1.Items.Count-1 do
         begin
           ListBox1.Items.Delete(ListBox1.Items.Count-1);
         end;
      end;
      Edit1.Text:=IntToStr(ListBox1.Items.count);
end;

end.
Ob die Dateien wirklich geschlossen wurden konnte ich bis Dato nicht ermitteln :-((
Aber das CloseFile müsste an der richtigen Stelle sein, da alle anderen Variationen nicht Zielführend waren.

Irgendjemand muss doch auch das selbe Problem schon mal gelöst haben. Zumal es sich um einen Standard Dialog handelt. Die BOH und die Handbücher halten sich da auch bedeckt zu dem Thema.

Ich möchte nur den eingeschlagenen Programmierweg beibehlaten, da dahinter bereits sehr viel anderes auf dem Code basiert.

Wäre nett wenn mir jemand die Lösung verraten könnte.


Schöne Grüße
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: Mehrere Textdateien aus Opendialog heraus ausführen

  Alt 29. Nov 2006, 16:15
Hallo,

lass dir doch mal die Fehlernummer ausgeben und nicht nur deinen eigenen Text.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Mehrere Textdateien aus Opendialog heraus ausführen

  Alt 29. Nov 2006, 16:18
Was marabu sagen will: Ändern mal
MessageDlg('Fehler beim Zugriff auf die Datei', mtWarning, [mbOk], 0); in
ShowMessage(SysErrorMessage(GetLastError)); Dann weißt du auch, warum es nicht funktioniert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#17

Re: Mehrere Textdateien aus Opendialog heraus ausführen

  Alt 29. Nov 2006, 16:24
Vielleicht besser IOResult ausgeben - aber vorher in lokaler Variable zwischenspeichern...
  Mit Zitat antworten Zitat
illbytes

Registriert seit: 22. Nov 2006
14 Beiträge
 
Delphi 3 Professional
 
#18

Re: Mehrere Textdateien aus Opendialog heraus ausführen

  Alt 29. Nov 2006, 16:52
Hallo,

Hm so funktionierte es nicht:

Delphi-Quellcode:
{$I+}
         if IOResult <> 0 then
         begin
         ShowMessage(SysErrorMessage(GetLastError));
          {MessageDlg('Fehler beim Zugriff auf die Datei', mtWarning, [mbOk], 0); }
         { exit;
          halt  }

         end
         else
           while not EOF(Datei)do
Wo und wie genau muss das im Code stehen?

Ist IOResult Integer?

Schönen Gruß
  Mit Zitat antworten Zitat
illbytes

Registriert seit: 22. Nov 2006
14 Beiträge
 
Delphi 3 Professional
 
#19

Re: Mehrere Textdateien aus Opendialog heraus ausführen

  Alt 29. Nov 2006, 18:01
Hallo,

so ich erhalte "der Vorgang wurde erfolgreich Beendet" [OK] wenn ich bei ca. 150 Dateien bleibe.

Wenn ich darüber hinausgehe gibt es gar keine Message Box und nix wird im Memo und TListbox angezeigt.

IO Result über Variable ist bei ca. 150 gleich 0:=[NULL] ansonsten keine Werteangabe.

Ergo wird es wohl keine Lösung geben.

Schönen Gruß
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#20

Re: Mehrere Textdateien aus Opendialog heraus ausführen

  Alt 29. Nov 2006, 18:05
Kein Abbruch, keine Fehlermeldung, gar nichts? Mit welchem Betriebssystem testest du?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08: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