Anzeige eingelesener Text innerhalb einer Schleife

Moderator: Moderatoren

Antworten
Hippo
Rookie
Rookie
Beiträge: 10
Registriert: So, 20. Okt 2013 16:11

Anzeige eingelesener Text innerhalb einer Schleife

Beitrag von Hippo »

Hallo zusammen,
ich hoffe wieder einmal auf die geballte Kompetenz des Forums bei einem Problem, das mich schon lange umtreibt:
Ich lese mit fread() aus einer großenTextdatei (Datanorm) Sätze in eine Datenbank ein. Das dauert machmal bis zu 15 min ohne Aktivität im Fenster
Deshalb möchte ich den gerade eingelesenen Satz jeweils kurz in einem Fenster anzeigen,möglichst im gleichen Fenster um Flittering zu vermeiden.
msg1= " "
do while .not. fileende
// Verarbeitung des eingelesenen Satzes
@ 3,5 DCSAY {||msg1}
// ?? hier liegt mein Problem: weiter im Programm ohne Eingabe von Hand
// Einlesen nächster Satz mir fread()
enddo
Gibt es da überhaupt eine Lösung ?
Danke schon mal für euren Hirnschmalz.

Peter
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Anzeige eingelesener Text innerhalb einer Schleife

Beitrag von Koverhage »

Code: Alles auswählen

oScrn := XbpStatic():new(,, { aBeginn[1], aBeginn[2]+40}, { aGroesse[1],60},, YES)
oScrn:caption := "Verarbeitung DATANORM"
oScrn:options := XBPSTATIC_TEXT_CENTER + XBPSTATIC_TEXT_WORDBREAK
oScrn:create()
oScrn:setColorBG(XBPSYSCLR_DIALOGBACKGROUND)
oScrn:setColorFg(GRA_CLR_BLACK)
oScrn:setFontCompoundName( "8.Arial" )
oScrn:show()
do while .not. fileende
   // Verarbeitung des eingelesenen Satzes
   oScrn:SetCaption( msg1 )
   // ?? hier liegt mein Problem: weiter im Programm ohne Eingabe von Hand
   // Einlesen nächster Satz mir fread()
enddo 

oScrn:destroy()
Gruß
Klaus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Anzeige eingelesener Text innerhalb einer Schleife

Beitrag von AUGE_OHR »

Hippo hat geschrieben:Ich lese mit fread() aus einer großenTextdatei (Datanorm) Sätze in eine Datenbank ein. Das dauert machmal bis zu 15 min ohne Aktivität im Fenster
hm ... ich benötige keine 15 Sekunden(!) zum "einlesen" von 1GB CSV Dateien ... das "verarbeiten" dauert länger.
Hippo hat geschrieben:Deshalb möchte ich den gerade eingelesenen Satz jeweils kurz in einem Fenster anzeigen,möglichst im gleichen Fenster um Flittering zu vermeiden.
wie wäre ein Anzeige mit einem Progressbar ?

wichtig ist nur das du nicht zu oft eine Anzeige aufrufst da es viel Zeit kostet

Code: Alles auswählen

   IF (i % (nMax/100)) == 0
also nur je 1%
gruss by OHR
Jimmy
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Anzeige eingelesener Text innerhalb einer Schleife

Beitrag von Rudolf »

Hallo,
ich mache es so:

Code: Alles auswählen

@ 0,0  DCSAY "" SAYSIZE 50 SAYOBJECT oMsg FONT "12.Arial bold"
...
DCGETOPTIONS NOMINBUTTON NOMAXBUTTON NORESIZE NOTITLEBAR WINDOWWIDTH 100
DCREAD GUI FIT PARENT @oWaitDlg EXIT OPTIONS getoptions MODAL
...
do while ..
    oMSg:setcaption("test")

enddo

Grüße
Rudolf
Hippo
Rookie
Rookie
Beiträge: 10
Registriert: So, 20. Okt 2013 16:11

Re: Anzeige eingelesener Text innerhalb einer Schleife

Beitrag von Hippo »

Ich habe den Tipp von Klaus (und Rudolf) ausprobiert, es klappt einwandfrei, nur den Parameter YES konnte ich nicht zuordnen, ich habe ich auch nicht in der XBASE++ - Reverenz zuordnen könne, aber es läuft auch gut ohne diesen Parameter. Der Vorschlag von Jimmy hat auch Charme, ich benutze DCPROGESS für die Prozentanzeige, aber halt nur 2% - Stufen, das ist für die Satzanzeige etwas wenig. Das Einlesen dauert deshalb so lange, weil ich jeden Satz gleich verarbeite.
Danke euch allen.
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Anzeige eingelesener Text innerhalb einer Schleife

Beitrag von Koverhage »

Steht doch in der Doku

<lVisible>

Mit dem Parameter <lVisible> wird bestimmt, ob ein XbpStatic-Objekt nach Aufruf der Methode :create() sichtbar ist, oder nicht. Standardmäßig ist <lVisible> .T. (wahr), d.h. ein XbpStatic-Objekt wird nach der Ausführung von :create() angezeigt und ist sichtbar. Dieses Standardverhalten kann unterdrückt werden, wenn für <lVisible> der Wert .F. (falsch) angegeben wird. In diesem Fall muß ein XbpStatic-Objekt explizit durch die Methode :show() angezeigt werden.
Gruß
Klaus
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Anzeige eingelesener Text innerhalb einer Schleife

Beitrag von Wolfgang Ciriack »

Hallo Klaus,
dann musst du noch dazuschreiben, dass du YES als .T. defined hast.
Viele Grüße
Wolfgang
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Anzeige eingelesener Text innerhalb einer Schleife

Beitrag von Koverhage »

Hallo Wolfgang,

ich nicht, sondern Alaska in der COMMON.CH , welche bei mir in jeder PRG eingebunden wird.
Gruß
Klaus
Antworten