Seite 1 von 1

wie Code optimieren ?

Verfasst: Mo, 14.03.2011 11:52
von sven-my
Hallo Experten,

vorab: besseres Betreff ist mir nicht eingefallen.

Problem:

Das Programm, welches ich über shell(.....) starte, braucht ewig, bis ich darauf zugreifen kann.

Ich vermute, auf Grund meiner sehr beschränkten PC-Kenntnissen, daß es daran liegt, wie ich die Zelle in der Tabelle "eMail" abfrage. Diese "Schleife" (while / wend) verbrät einfach zuviel Rechenzeit, die dem Start des Programmes einfach fehlt.
Auf der anderen Seite, darf das Makro erst dann weiterlaufen, wenn in der Tabelle "eMail" etwas eingetragen wurde - was ja durch das gestartete Programm geschieht.


Code: Alles auswählen

rem --- Pfad bestimmen und zuweisen ---
if lw <> "C:" then
   	Pfad = pfadUSB + ordner 	'USB-Stick
   	pcaLw = pfadUSBadr
else
   	Pfad = pfadHD + ordner 	'Festplatte
   	pcaLw = pfadHDadr
end if

rem --- Start Adress-PrG ---	
Shell(pcalw + "pca20.exe", 1, pcaLw + para,)


rem --- Dateiname zuweisen ---
myText = ThisComponent.getTextTables().getByName("eMail").getCellByPosition(1,1).string
if NOT oDoc.haslocation() then
'	if len(myText) < 5 then
		while len(myText) < 5
			myText = ThisComponent.getTextTables().getByName("eMail").getCellByPosition(1,1).string
		wend
'	end if
end if
Wie kann ich das Ganze anders machen, ohne sinnlos Rechenkapazität zu verbraten, und ohne das Makro in zwei Teile (Teil 1: Tabelle füllen / Teil 2: Tabelle auslesen und weiter verarbeiten) zu teilen, um diese dann nacheinander manuell zu starten ?

gruß
sven-my

Re: wie Code optimieren ?

Verfasst: Mo, 14.03.2011 12:52
von Karolus
Hallo
Dein "while....wend" ist eine Endlosschleife, weil "mytext" ja nicht von selbst**** länger wird...warum nimmst du nicht die auskommentierten "if...endif"-zeilen?
****höchstens durch Einflüsse von anderer Stelle, die aber hier in dem Codeschnipsel nicht ersichtlich sind.

Edit:
Falls sich "mytext" doch ändert, und "while...wend" so gewollt ist, schreib in der Schleife wenigstens ein angemessenes:

Code: Alles auswählen

wait zahl 'Zeit in Millsekunden
damit die Schleife nicht sämtliche Resourcen bindet.

Gruß Karo

Re: wie Code optimieren ?

Verfasst: Mo, 14.03.2011 13:00
von sven-my
Hallo karo,

die Endlosschleife ist ja gewollt !

Der Inhalt der Zelle soll ja auch nicht von selbst länger werden !

Die Zelle in Tabelle "eMail" soll so lange (auf Inhalt) abgefragt werden, bis das, über shell(....), gestartete Programm dort etwas eingetragen hat.

D.H. das Makro soll erst dann weitergeführt werden, wenn in der Zelle von der Tabelle "eMail" ein Wert eingetragen wurde.

gruß
sven-my

Re: wie Code optimieren ?

Verfasst: Mo, 14.03.2011 13:03
von Karolus
Hallo
Siehe Nachtrag in der letzten Antwort

Karo

Re: wie Code optimieren ?

Verfasst: Mo, 14.03.2011 13:25
von sven-my
Hallo karo,

meinst Du das so ? :

Code: Alles auswählen

rem --- Dateiname zuweisen ---
myText = ThisComponent.getTextTables().getByName("eMail").getCellByPosition(1,1).string
if NOT oDoc.haslocation() then
      while len(myText) < 5
          myText = ThisComponent.getTextTables().getByName("eMail").getCellByPosition(1,1).string
          wait 8000
      wend
end if
Ich war der Meinung, das "wait" verbraucht ebenso viel Resourcen.
Sechs Sekunden ist so in etwa die Zeit, die das Programm benötigt, wenn es über den shell-Befehl aufgerufen wird, bis ich mir einen Datensatz raussuchen kann.

gruß
sven-my

Re: wie Code optimieren ?

Verfasst: Mo, 14.03.2011 13:38
von Karolus
Hallo
Wait 1000 ist lang genug

Wait verbraucht aber deutlich weniger Kapazität.

Gruß Karo

Re: wie Code optimieren ?

Verfasst: Mo, 14.03.2011 13:45
von sven-my
Hallo Karo,

herzlichen Dank !
deutlich weniger
ist aber stark untertrieben !!!


gruß
sven-my