Da scheint es Unterschiede in den Excel-Versionen zu geben.
Bei meinem Excel (Office 2000) kann ich Formeln auch ohne .Formula übergeben, da diese durch das führende = als solche identifiziert werden. Fehlermeldung erhalte ich dabei nicht.
Aber es ist natürlich korrekt, eine Formel auch als solche zu kennzeichnen. ![]()
Beiträge von BugFix
-
-
Sorry, wenn ich den Thread mal hijacke:
Einhaltung von http://www.autoitscript.com/autoit3/scit…F_Standards.htm
Diesen Punkt möchte ich mal aufgreifen.
Ich verfolge im EN-Forum seit einiger Zeit Beiträge, in denen es um Sinn (oder besser Unsinn) der Verwendung Globaler Variablen geht und auch generelle Empfehlungen, wann und wie deklariert werden soll:
In den UDF-Richtlinien findest du folgendes:ZitatAll variables must be declared at the beginning of the UDF with a “Local” scope and before they are used for the first time.
In einem Beitrag von Valik fand ich folgenden Hinweis:Zitat..don't front-load your functions with all the variable declarations. Declare variables right before they are used.
Hier scheinen sich die Devs nicht ganz einig zu sein. Wobei Valiks Hinweis mir sinnvoller erscheint. Eine kopfgeführte Deklaration aller zu nutzenden Variablen ist zwar "schön" anzusehen, macht aber keinen tieferen Sinn. Die Deklaration bei erster Verwendung mit gleichzeitiger Wertzuweisung ist da effektiver.Ich kann mich erinnern, dass wir vor langer Zeit schon mal eine Diskussion zum Thema Standards in AutoIt hatten, da ja der User ziemlich frei ist, bei dem was er tut.
Unter dem Aspekt, dass man Globale Variablen tunlichst vermeiden sollte (nähere Erläuterung hier), wär es vielleicht sinnvoll sich damit nochmals zu befassen (aber in einem eigenen Thread ;)). -
$oSheet.Range("A2:A10")
Das ist absolut identisch mit "='Mein Sheet'!Z2S1:Z10S1", nur das einmal die Adressierung über das Objekt und das andere mal über die Formelsyntax erfolgt.
-
Hallo UEZ,
auch von mir Alles Gute zum Geburtstag. Noch bist du ja Bifi (bis vierzig :)) - aber Uhu (unter 100) läßt schon mal grüßen.

-
Danke BugFix, du warst mir schon das 2.mal der Denkanstoß der mir fehlte.
Wie heißt es doch so schön im Film "Der 200 Jahre Mann" - Man ist immer gern zu Diensten.

-
Nicht im Array löschen, sondern einfach nicht eintragen
[autoit]
$Drives = ""
[/autoit][autoit][/autoit][autoit]
$var = DriveGetDrive("all")If Not @error Then
[/autoit]
For $i = 1 To $var[0]
$Drives &= $var[$i] & " "
$lw = DriveStatus ($var[$i])
If $lw = 'NOTREADY' Then ContinueLoop
_GUICtrlComboBox_AddString($Combo1, $var[$i] & "[" & $lw & "]")
_GUICtrlComboBox_SetCurSel($Combo1, 0)
Next
EndIf -
Als Erstlingswerk schon ganz nett. Und wenn du einiges an Erfahrungen gesammelt hast, nimmst du dir das Teil nochmal vor und schrumpfst das Skript auf etwa 20-25 % der jetzigen Größe bei selbem Leistungsumfang.

-
Ja, wo isser denn...

-
@Jautois: Du hast wieder Globale Variablen drin und genau die wollten wir vermeiden.

Muster:
[autoit]$hWndCaptcha = _CreateCaptcha() ; === $hWndCaptch enthält jetzt den Wert von $CaptchaLabel aus der Funktion
[/autoit][autoit][/autoit][autoit]Func _CreateCaptcha()
[/autoit]
;.....
Return $CaptchaLabel
EndFunc -
Du mußt beim Erstellen die Variable $CaptchaLabel aus der Funktion _CreateCaptcha mit Return zurückgeben und in einer Variablen speichern und dann diese Variable weiterverwenden.
-
Damit die belegten Variablen auch in der
2. Funktion _CheckCaptcha auslesbar sind.
Das umgeht man, indem man die Variable Lokal deklariert und dann ByRef an die Funktionen übergibt. Muß ich mir auch gerade angewöhnen, da Globale Variablen eine gewaltige Fehlerquelle darstellen.
[autoit]
Hier mal als Muster:Local $iVal = 20
[/autoit][autoit][/autoit][autoit]ConsoleWrite(_test1(2, $iVal) & @CRLF)
[/autoit][autoit][/autoit][autoit]
ConsoleWrite(_test2(2, $iVal) & @CRLF)Func _test1($iSummand1, ByRef $iSummand2)
[/autoit][autoit][/autoit][autoit]
Return $iSummand1 + $iSummand2
EndFuncFunc _test2($iFaktor1, ByRef $iFaktor2)
[/autoit]
Return $iFaktor1 * $iFaktor2
EndFunc -
heiss das, dass alle dateien die unter dem registry key "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce"sind,
noch vor dem anmelden ausgeführt werden??Nein, der Anmeldevorgang muß abgeschlossen sein. Aber danach wird sofort der Eintrag unter RunOnce abgearbeitet - nur Services werden noch davor abgearbeitet.
-
Ich habe das schon 3-mal durchgelesen, aber ich weiß noch immer nicht was es werden soll. :wacko:
Also du willst irgendwie die XML-Datei verarbeiten.
Aber wie soll das fertige Ergebnis aussehen?
Wir können am besten helfen, wenn wir folgende Infos haben:
- Zustand vorher (das ist XML-Datei)
- gewünschter Zustand (??)Aber nicht mit Worten umschreiben, sondern an einem Bsp.
-
Wenn du die Dll öffnest siehst du verschiedene Gruppen. Unter anderem ICON und ICON GROUP.
Für dich zählen NUR die Nummern in ICON GROUP, nicht die in ICON! -
Werd doch mal genauer, was kriegst du nicht gebacken?
-
1. Ein Combo-Control hat keine Menüs, nur Einträge und zu denen kannst du keine "Untereinträge" erstellen - dafür gibt es z.B. das TreeView.
2. Opt("WinTitleMatchMode", 2)
-
Im angehängten Zitat von progandy ist doch die Beantwortung deiner Frage enthalten. :wacko:
-
Welches ist denn nun die Version, die man testen darf,
Danke für das Angebot, aber hatte meinen Fehler ja noch gefunden. Die jetzigen Lösungen reichen mir und funktionieren. -
Es wäre nur ein möglicher Systemhänger als Problem. (kann passieren, da die parallele Videoaufzeichnung recht ressourcenintensiv ist und wenn dann der User noch etwas rumspielt geht das schonmal in die Hose
)
Aber das ist ja unabhängig von dem Hauptproblem und nunmal nicht zu beeinflussen. -
1. Ich habe zuerst die neuste stabile Version von AutoIt installiert und dannach Scite. Nun ist bei mir im Programmmenü zwar ein Punkt "ScriptWiter" vorhanden, der führt aber ins Leere. Siehe Screenshot im Anhang.
Das wird nicht mit AutoIt installiert, sondern mit SciTE. Installiere die aktuelle Version von SciTE4AutoIt3, dann ist das auch enthalten.