Der Informationsgehalt des Posting ist stark ausbaufähig. ![]()
Wie sieht der Inhalt des Arrays aus (ganzes Skript!)?
Auf was soll geprüft werden?
Der Informationsgehalt des Posting ist stark ausbaufähig. ![]()
Wie sieht der Inhalt des Arrays aus (ganzes Skript!)?
Auf was soll geprüft werden?
Es besteht zumindest ein gewisses Abmahnrisiko und den Ärger kann man sich eigentlich sparen.
Na so:
$file = @ScriptDir & '\liste.txt'
For $i = 18 To 97
For $j = 1 To 255
;Ping("192.168."& $j & $i)
FileWriteLine($file, "192.168." & $i & '.' & $j)
Next
Next
Oder worum gehts genau?
Die Schleifen sind falschrum.
Erst 18-97 und innerhalb dieser Schleife die hinteren Ziffern wählen (Schleife 1-255)
Hey,
kann es sein, dass eurer Seite das Impressum fehlt?
Ansonsten gut gemacht (das ganze Projekt). ![]()
Verstehe ich nicht, ist die ini zu groß?
Wie soll die .ini denn dargestellt werden? Als 2D Array? 1D Array?
Vielleicht hilft das hier? FileWriteFromArray2D
edit \ Hier noch ein Bsp: mit Listview und Gruppen, lässt sich leicht auf eine Liste abändern:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <File.au3>
Global $ini = @ScriptDir & "\dvb-tools.ini" ;Pfad zur ini
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Ini read to Listview - Beispiel", 700, 500, -1, -1)
$ListView1 = GUICtrlCreateListView("", 20, 20, 660, 350)
$hlistview = GUICtrlGetHandle($ListView1)
_GUICtrlListView_AddColumn($hlistview, "Key", 200)
_GUICtrlListView_AddColumn($hlistview, "Value", 450)
$Button2 = GUICtrlCreateButton("Iniread", 20, 420, 120, 33, 0)
$Button1 = GUICtrlCreateButton("Add", 220, 420, 120, 33, 0)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button2
_Initolistview($hlistview, $ini)
Case $Button1
_Add()
EndSwitch
WEnd
Func _Initolistview($hwnd, $path)
; nuts (http://www.autoit.de)
; $hwnd = Handle to the listview
; $path = ini path
Local $anames, $aread
If Not IsHWnd($hwnd) Then
SetError(1,0,1) ;not a handle -> @error = 1
Return
ElseIf Not FileExists($path) Then
SetError(1,0,2) ;ini not found -> @error = 2
Return
EndIf
$anames = IniReadSectionNames($path)
$counter = -1;_GUICtrlListView_GetItemCount($hwnd)
For $i = 1 To $anames[0]
$aread = IniReadSection($path, $anames[$i])
If @error Then
$counter += 1
_GUICtrlListView_EnableGroupView($hwnd)
_GUICtrlListView_InsertGroup($hwnd, -1, $i, $anames[$i])
_GUICtrlListView_AddItem($hwnd, "Kein Eintrag")
_GUICtrlListView_SetItemGroupID($hwnd, $counter, $i)
ContinueLoop
EndIf
_GUICtrlListView_EnableGroupView($hwnd)
_GUICtrlListView_InsertGroup($hwnd, -1, $i, $anames[$i])
For $x = 1 To $aread[0][0]
$counter += 1
_GUICtrlListView_AddItem($hwnd, $aread[$x][0])
_GUICtrlListView_AddSubItem($hwnd, $counter, $aread[$x][1], 1)
_GUICtrlListView_SetItemGroupID($hwnd, $counter, $i)
Next
Next
EndFunc ;==>_Initolistview
Func _Add()
#region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Form1", 431, 200, 192, 124)
$Input1 = GUICtrlCreateInput("", 40, 64, 113, 21)
$Input2 = GUICtrlCreateInput("", 192, 64, 177, 21)
$Label1 = GUICtrlCreateLabel("Key", 40, 32, 36, 17)
$Label2 = GUICtrlCreateLabel("Value", 192, 32, 36, 17)
$Button = GUICtrlCreateButton("Übernehmen", 140, 150, 120, 33, 0)
GUISetState(@SW_HIDE, $Form1)
GUISetState(@SW_SHOW, $Form2)
#endregion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete($Form2)
GUISetState(@SW_SHOW, $Form1)
ExitLoop
case $Button
local $count
_GUICtrlListView_AddItem($hlistview,GUICtrlRead($Input1))
local $count=_GUICtrlListView_GetItemCount($hlistview)-1
_GUICtrlListView_AddSubItem($hlistview,$count,GUICtrlRead($Input1),1)
_GUICtrlListView_SetItemGroupID($hlistview,$count,1)
GUIDelete($Form2)
GUISetState(@SW_SHOW, $Form1)
ExitLoop
EndSwitch
WEnd
EndFunc ;==>_Add
Einfach alle Key -Value Paare in ein 2D Array lesen?
Ist jetzt etwas unklar was du mit 1D und 3D Array meinst.
Da kann was nicht stimmen- teste mal:
[autoit]$schnittpunkt = _intersection("(0|0|0)", "(1|0|0)", "(0|1|0)", "(0|0|1)", "(1|0|0)")
[/autoit]Ich hab diesen Ansatz mal ausgedruckt: http://www.cs.virginia.edu/~gfx/Courses/2…ntersection.pdf
Verstehs nur noch kein bisschen ...
Also als Beispiel kannst du einfach eine "Basisebenen" nehmen und den Durchstoßpunkt bei (0|0|0) setzen.
A(0|0|0)
B(1|0|0)
C(0|1|0)
D(0|0|0)
Bewegungsvektor der Geraden beliebig.
Oder eben den Durchstoßpunkt (Startpunkt der Geraden) einer beliebigen Ebene auf einen der 3 Dreieckspunkte legen.
P.S: Das mit den Winkeln stimmt, ist aber auch schwierig umzusetzen. ![]()
anno2008: Deine dritte Bedingung für die "liegt im Dreiecke" Prüfung stimmt nicht.
=> 0<=r+s<=1
Wo ist der PHP Teil?
Wo ist der "Befüll-Teil" im Autoitskript?
![]()
Mit dem Flag 0 (=default) gibt Stringregexp gar keinen @error bei "no match" aus.
[autoit]
$string = "hallo"
$test= StringRegExp($string, "test")
if @error then MsgBox(1, "", @error)
if not @error then MsgBox(1, "", $test)
$test= StringRegExp($string, "hallo")
if @error then MsgBox(1, "", @error)
if not @error then MsgBox(1, "", $test)
Genau, es soll geprüft werden ob die Gerade durchs Dreieck geht oder nicht (mit Rückgabe des Punktes).
Endlich mal ein Abiturient, da ist man noch fit in Sachen Vektoren ![]()
edit \ Der interessante Teil fehlt noch
Bin sehr gespannt auf deine Lösung.
Das hat mich auch etwas verwirrt.
Was ist das für eine Technik mit dem Komplettbild?
So gehts mir auch sonst hätte ich schon was gebastelt :wacko:
Vielleicht übers WE ... kann aber nichts versprechen ![]()
Hm stimmt wohl gar nicht.
Die sind in der comctl32.dll (Bitmap ID 120) ?
avi ist nur ein Container, darin können sich unterschiedliche Quellen befinden und somit gibts auch unterschiedliche Decoder.
Wie man Infos über das Directshowsystem kriegen kann würde mich allerdings auch interessieren.
In der SHELL32 .dll wenn mich nicht alles täuscht.
Zeiel 45 startet einen loop durch alle Sections.
Anstatt dieser Schleife kannst du per Inireadsection auch nur eine bestimmte angeben.
edit \ Habs mal kommentiert.
Die ganze algebraische Lösung mit Variablen - kannst ja mal Werte einsetzen!
Dreieck: (ABC)
Startpunkt A = (A1 | A2 | A3)
B = (B1 | B2 | B3)
C = (C1 | C2 | C3)
Bewegungsvektor AB = (AB1 | AB2 | AB3)
AB1 = B1 - A1
AB2 = B2 - A2
AB3 = B3 - A3
Bewegungsvektor AC = (AC1 | AC2 | AC3)
AC1 = C1 - A1
AC2 = C2 - A2
AC3 = C3 - A3
Gerade:
Startpunkt X = (X1 | X2 | X3)
Bewegungsvektor XY = (XY1 | XY2 | XY3)
Ebenengleichung:
A + r* AB + s* AC = (A1 | A2 | A3) + r * (AB1 | AB2 | AB3) + s *(AC1 | AC2 | AC3)
Geradengleichung:
X + t* XY = (X1 | X2 | X3) + t* (XY1 | XY2 | XY3)
Gleichungssystem aufstellen und gleichsetzen:
A1 + r* AB1 + s*AC1 = X1 + t* XY1
A2 + r* AB2 + s*AC2 = X2 + t* XY2
A3 + r* AB3 + s*AC3 = X3 + t* XY3
Gleichungssystem lösen => t = …
Einsetzen in die Geradengleichung ergibt den Durchstoßpunkt D (D1 | D2 | D3):
D1 = X1 + t* XY1
D2 = X2 + t* XY2
D3 = X3 + t* XY3
r und s der Ebenengleichung ausrechnen durch Einsetzen von D in die Ebenengleichung oder über das zuvor aufgestellte Gleichungssystem: (keine Ahnung was programmtechnisch einfacher ist)
D1 =A1 + r* AB1 + s*AC1
D2 =A2 + r* AB2 + s*AC2
D3 =A3 + r* AB3 + s*AC3
Gleichungssystem lösen => r = … & s= …
r und s prüfen auf:
0 <= s <= 1
0 <= t <= 1
0 <= s+t <= 1
(den letzten Schritt könnte ich sogar in Autoit umsetzen
)
Da sich deine Korrektur mit meinem Post überschnitten hat gebe ich den Hinweis umgehend zurück. ![]()