AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ascii-Datei ist fertig geschrieben Test

Ein Thema von hgiel · begonnen am 21. Apr 2005 · letzter Beitrag vom 21. Apr 2005
Antwort Antwort
hgiel

Registriert seit: 4. Apr 2005
61 Beiträge
 
#1

Ascii-Datei ist fertig geschrieben Test

  Alt 21. Apr 2005, 07:43
Hallo,

ich habe folgendes Problem:

In meinem Programm wird im Verlaufe einer Datenbankabfrage im Hintergrund eine Ascii-Datei erzeugt und mit Daten vollgeschrieben. Ich möchte dem Anwender nun einen Hinweis (showmessage) geben wenn die Auswertung beendet wurde, d.h. die Ascii-Datei fertig/voll geschrieben wurde also nicht mehr in Benutzung ist, und erst dannach weitere Anwendereingaben zulassen.
  Mit Zitat antworten Zitat
tHeRiAn

Registriert seit: 16. Okt 2003
Ort: Neunkirchen, Siegerland
51 Beiträge
 
Delphi 5 Enterprise
 
#2

Re: Ascii-Datei ist fertig geschrieben Test

  Alt 21. Apr 2005, 08:07
Moin Moin,
deine Frage lautet bestimmt, wie du es schaffst, zu merken wenn die Datei "Voll" ist...

läuft denn bei dir, oder in deiner Auswertung eine Funktion durch welche in die Datei schreibt?

gib mal ein wenig mehr Stoff wie du das genau machst...

gruss sven
  Mit Zitat antworten Zitat
hgiel

Registriert seit: 4. Apr 2005
61 Beiträge
 
#3

Re: Ascii-Datei ist fertig geschrieben Test

  Alt 21. Apr 2005, 08:33
ich starte in meinem Programm per ShellExecute eine DOS-Batch, in der eine Oracle-SQL-Abfrage gestartet wird


// Oracle-Auswertung starten
ExecuteShellCommand(tmp_pfad+'\diff.bat',true); // true -> Fenster unsichtbar!!!


Das SQL-Skript welches per Batchaufruf gestartet wird und in welchem per SPOOL-Befehl die ASCII-Datei erzeugt wird sieht so aus:

SQL-Code:
spool c:\test.txt

set linesize 120

set pagesize 0

select dabr.dinr$, dabr.dabf$, dabr.tchf$, sum (dabr.umsatzgpr#),
diff.dtdf$,sum (diff.vk), diff.arti$,diff.text, diff.kommentar
from vkabdabr dabr, vkabddff diff
where dabr.dabf$ between '01.01.05and '31.01.05and
dabr.dabr$$ between '1000000000and '1099999999and
diff.dabr$=dabr.dabr$$
group by dabr.dinr$, dabr.dabf$, dabr.tchf$, diff.dtdf$,diff.dffa$, diff.arti$, diff.text, diff.kommentar
order by dabf$, dinr

spool off

exit // Oracle-Instanz wird beendet und ASCII-Datei C:\test.txt sollte geschrieben sein?!
anschließend frage ich - zur Zeit - mit der Funktion

if not IsFileInUse(C:\TEST.TXT) then showmessage('Auswertung ist beendet!!!'); den Status der Ascii-Datei ab. Leider wird immer SOFORT die Meldung - Auswertung ist beendet!!! - ausgegeben. Die ASCII-Datei wurde anelegt ist aber noch nicht voll und somit sollte die Meldung erst ein wenig später erscheinen!

Die IsFileInUse-Funktion lautet:

Delphi-Quellcode:
function IsFileInUse(fName : string) : boolean;
var
   HFileRes : HFILE;
begin
   Result := false;
   if not FileExists(fName) then
      exit;
   HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE,
               0 {this is the trick!}, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
   Result := (HFileRes = INVALID_HANDLE_VALUE);
   if not Result then
   CloseHandle(HFileRes);
end;
ich hoffe, daß ich mich nicht zu kompliziert ausgedrückt habe und du es verstehen konntest!

[edit=r_kerber]SQL- und Delphi-Tags eingefügt. Mfg, r_kerber[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Ascii-Datei ist fertig geschrieben Test

  Alt 21. Apr 2005, 08:39
Hai hgiel,

evetuell hilft Dir dieser Code aus der Code-Library.
Damit kannst Du ein externes Programm starten und die Ausführung deines Programmes solange anhalten bis der externe Prozess beendet ist.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
hgiel

Registriert seit: 4. Apr 2005
61 Beiträge
 
#5

Re: Ascii-Datei ist fertig geschrieben Test

  Alt 21. Apr 2005, 08:59
super - hat geklappt!

Vielen Dank für den Tip

  Mit Zitat antworten Zitat
Antwort Antwort


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 21:58 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