400 x 200 x 1 mm? Okay, 1,5mm
Hi Alina,
sowas gilt nicht als "Acrylglas" oder -platte -- das ist Folie. ![]()
Warum muß es Acryl sein? Wenn es nur lichtdurchlässig und wasserabweisend sein soll findest du im Baumarkt diverse Folien dieser Stärke.
400 x 200 x 1 mm? Okay, 1,5mm
Hi Alina,
sowas gilt nicht als "Acrylglas" oder -platte -- das ist Folie. ![]()
Warum muß es Acryl sein? Wenn es nur lichtdurchlässig und wasserabweisend sein soll findest du im Baumarkt diverse Folien dieser Stärke.
Wie bringe ich einem Slider bei, mit zwei Nachkommastellen zu arbeiten?
Das geht nur grob. Du kannst den Slider nicht auf Hunderstel bewegen (so groß sind Monitore i.A. nicht ;)). Die kleinste Bewegung eines Sliders ist ein Pixel und die Angaben sind in Prozent erforderlich. Hat der Slider eine Länge von 100 px, so steht jedes Pixel für den Wert 1.
Ist er 200 px lang, kannst du also mit der Schrittweite: 100% / 200 px = 0,5 arbeiten. D.h. ab einer Sliderlänge von 10.000 px hast du eine Schrittweite von 0,01. ![]()
Das kannst du aber recht simpel lösen: Das Uhr-Prinzip. Ein Wert läuft auf Maximum und erhöht den nächsten Zähler, setzt sich selbst zurück, usw. Einfach mit Zahlenlabel/Input arbeiten und für Feinjustierung Slider verwenden.
Lies dir einfach die Hilfe für diese Befehle durch.
Du versuchst die Syntax von
GuiCtrlCreateListviewItem
[/autoit]zu verwenden. Das ist aber für die UDF nicht möglich. Dort werden Item und SubItem getrennt erstellt.
[OT]
Ich mußte leider einige Posts löschen und auch einen Verweis aussprechen.
Bitte immer friedfertig und höflich miteinander umgehen.
[/OT]
Hat sich schon erledigt
Dann bitte den Beitrag als gelöst markieren.
Startpost - Bearbeiten - Präfix auf gelöst.
wenn ich aber in ein schon vorhandenes Internetexplorerfenster
Schau dir mal
_IEAttach
[/autoit]an.
Der erster Text ist gelöscht. Ich muss es irgendwie Wiederherstellen um den Präfix auf Abgeschlossen zu ändern.
Ist wiederhergestellt - ich habs dir gleich auf abgeschlossen gesetzt.
Du verstehst die Funktionen noch nicht. ![]()
Beim Aufruf wird eine Iteratorfunktion erstellt, diese gibt die erste Zeile zurück, beim zweiten Aufruf die nächste Zeile usw.. Wenn das Dateiende erreicht ist wird nil zurückgegeben.
In meinem Bsp. habe ich diese Iteratorfunktion (aufgerufen durch io.lines(file) ) als dritten Parameter der for-Schleife übergeben. Somit werden alle Zeilen nacheinander ausgegeben.
Nur für kleine Dateien empfiehlt sich diese Vorgehensweise, da aufgrund des Garbage Collectors, den LUA kontinuierlich aufruft um Speicherplatz freizugeben, das Einlesen einer 350 kB Datei zeilenweise fast eine Minute dauert. Liest du dieselbe Datei aber mit io.read("*all") ein, dauert der Vorgang nur noch 0.02 s!
Lies mal das: Programming in Lua (first edition), da findest du viele gute Tipps.
Obwohl ich trotzdem gerne wissen würde, was ich bei der UDF falsch gemacht hab
Bei der UDF habe ich extra angegeben, dass das nur bei Standard-Listview funktioniert, also erstellt mit "GuiCtrlCreateListview". Mit "_GUICtrlListView_Create" funktioniert es nicht.
Da könnte also dein Problem liegen.
Mal kurzer Blick drauf..
Für Lesefunktion kannst du dir das Handle schenken. Ruf die Iteratorfunktion mit dem Dateinamen auf. Hast du ein Handle, wird dieses beim Aufruf zurückgewandelt in den Dateinamen - also doppelt gemoppelt.
So funzt es:
Dann solltest du dein Skript umbauen, ansonsten mußt du halt drauf verzichten oder mit Customdraw selber zeichnen (findest du Skripte von mir im Forum dazu).
Dafür hält LUA das Event "OnKey" bereit. Je nach dem, was du machen möchtest, könntest du aber auch "OnChar" verwenden.
Unterschied:
- OnKey gibt dir den Keycode bevor das zugehörige Zeichen verwertet wird, d.h. du kannst hier sofort ggf. korrigierend eingreifen.
- OnChar gibt dir das Zeichen nachdem die Taste gedrückt und das Zeichen übernommen wurde.
Hier ein Bsp. für OnKey:
----------------- create new EventClass, event: OnKey ------------------
MyHitKey = EventClass:new(Common)
------------------------------------------------------------------------
----------------- Event: OnKey -----------------------------------------
function MyHitKey:OnKey(_keycode, _shift, _ctrl, _alt)
print('_keycode: '..tostring(_keycode)..', _shift: '..tostring(_shift)..', _ctrl: '..tostring(_ctrl)..', _alt: '..tostring(_alt)) -- DebugToConsole
end --> MyHitKey
------------------------------------------------------------------------
Edit:
Hier analog für OnChar
----------------- create new EventClass, event: OnChar ------------------
MyNewChar = EventClass:new(Common)
------------------------------------------------------------------------
-------------------------------------------------------------------------
function MyNewChar:OnChar(_charAdded)
print('_charAdded', _charAdded)
end --> MyNewChar
-------------------------------------------------------------------------
Eigentlich hatte ich eine Beschreibung des Formats erwartet. :wacko:
Also habe ich doch mal Tante Google befragt. TGA Beschreibung
Meiner Meinung nach sollte es möglich sein, diese Struktur nachzubilden und entsprechend Bilder in die Struktur zu laden.
Es wäre vielleicht sinnvoll, wenn du erklärst, was "TGA-Bilder" sind. Kenne ich persönlich nicht und habe auch keinen Bock danach zu googeln.
Dann kompiliere die Datei und lass sie in den einzelnen Skripten z.B. per Run / RunWait ausführen, evtl. Datenaustausch mit der Funktion mußt du dann noch separat regeln. Dazu findest du hier im Forum ausreichend Beispiele.
und könnt mir helfen.
Nein.
Wenn das Skript kompiliert wurde, kannst du im Nachgang keine includierten Bestandteile austauschen. Ist auch völlig unsinnig diese Idee!
Wurden z.B. UDF verändert, dann reicht es nicht die UDF auszutauschen - in der Regel sind auch Anpassungen in der Syntax vorzunehmen.
Was man variabel halten kann, sind z.B. mediale Inhalte (Bilder, Sounds), die in einer Dll gespeichert werden.
Such mal in meinen Skripten 'GetUnusedVars' und 'SetVarsDeclared'. Dort werden die Variablen nach Gültigkeitsbereich ermittelt.
Wobei solche Lösungen in AutoIt nicht optimal sind. Inzwischen verwende ich für solche Aufgaben ausschließlich LUA-Skripte.
Man muss berücksichtigen, dass das Datum in Excel nicht als Wert, sondern als Formel behandelt wird.
Liest man statt Zelle.Value Zelle.Formula aus, stimmt auch der Datumswert.
Besteht die Möglichkeit mit Autoit herauszufinden welche Zeile die nächst freie ist?
Selbstverständlich geht das (und ohne jede Schleife ;)). Excel hält dafür die Methode UsedRange bereit:
$sFilePath = 'C:\test1.xls'
[/autoit][autoit][/autoit][autoit]$oExcel = ObjCreate("Excel.Application")
$oExcel.Workbooks.Open($sFilePath)
; === letzte Zeile
ConsoleWrite('Anzahl Zeilen: ' & $oExcel.Worksheets(1).UsedRange.Rows.Count & @CRLF)
; === letzte Spalte
ConsoleWrite('Anzahl Spalten: ' & $oExcel.Worksheets(1).UsedRange.Columns.Count & @CRLF)