Geil, genau das habe ich gebraucht. Erspart viel Arbeit in meinem aktuellen Programm.
XProfan X4 mit Inlineassembler und mehr
-
-
-
Beim herumspielen mit den neuen ZIP-Befehlen ist mir aufgefallen, dass es doch recht bequem wäre, wenn man gleich die relativen Pfade bekäme. Und da es sich relativ einfach einbauen ließ, ...
Gruß
Roland -
Und Weiteres zum Thema "... und mehr":
DropDown-Pfeile bei Toolbar-Buttons
Es gibt jetzt auch in XProfan die kleinen Pfeile nach unten am rechten Rand eines Toolbar-Buttons, mit denen man Detail-Menüs oder -Funktionen aufklappen kann.
Die Toolbar-Funktionen "AddButton", "AddTextButton", "InsertButton" und "InsertTextButton" er halten einen optionalen zusätzlichen Parameter. Ist dieser 0 oder nicht vorhanden, gibt es keinen DropDownPfeil, ist er größer als 0, gibt es den DropDown-Pfeil für den Button.
Die ID des gedrückten DowpDown-Pfeiles befindet sich nach dem WaitInput in der Systemvariablen %DropDownID und kann auch mit der neuen Funktion DropDown(ID) abgefragt werden. Ähnlich wie bei der Funktion MenuItem() ist der Rückgabewert der Funktion 1, wenn der entsprechende Pfeil angeklickt wurde.
In der neuesten Subscriptionsversion ist diese Erweiterung vorhanden!
Ein Beispiel:
Code
Alles anzeigenDeclare hToolBar&, hBild&, ende% WindowStyle 63 Cls hToolbar& = Create("TOOLBAR", &hWnd, 0, 0, 2, 2000, 1) Toolbar("AddButton", hToolBar&, 0, 2000, "Button 1", 1) Toolbar("Separator", hToolbar&) Toolbar("AddButton", hToolBar&, 5, 2005, "ENDE") WhileNot ende% WaitInput locate 10,30 If %KEY = 2 ende% = 1 ElseIf %KEY = 4 SetWindowPos hToolbar& = 0, 0 - 0, 0; 0 ElseIf MenuItem(2000) MessageBox("Schnipp schnapp!", "Test", 0) cls rgb(255,255,255) ElseIf DropDown(2000) CreateMenu AppendMenu 101,"&blau" AppendMenu 102,"&rot" AppendMenu 103,"&grün" Separator AppendMenu 2005,"&Ende" TrackMenu %MouseX,32 EndIf If MenuItem(2005) ende% = 1 ElseIf MenuItem(101) cls rgb(0,0,255) ElseIf MenuItem(102) cls rgb(255,0,0) ElseIf MenuItem(103) cls rgb(0,255,0) EndIf EndWhile DeleteObject hBild& End
-
Und als letzte größere Erweiterung wird es auch noch einige Funktionen zum Empfangen von Mails geben. Obwohl hier natürlich nicht das SMTP-Protokoll zum Tragen kommt, sondern IMAP, werden die Funktionen unter der Containerfunktion SMTP eingefügt werden:
Code
Alles anzeigenwindow 1200, 1000 set("smtpSSL", 2) clearList print smtp("GetFolders","MESSAGES","imap.1und1.de:993",<User (Mailadresse)>, <Passwort>) listbox$("IMAP-Folder",2) clearList print smtp("GetHeaders","INBOX","MESSAGES","imap.1und1.de:993", <User (Mailadresse)>, <Passwort>) listbox$("IMAP-Header",2) clearList print smtp("GetMail","INBOX",5,"imap.1und1.de:993", <User (Mailadresse)>, <Passwort>) listbox$("Mail",2) waitinput end
Statt "MESSAGES" kann da natürlich auch "RECENT" oder "UNSEEN" stehen, also ein erlaubter Message-Status. Und statt "INBOX", die es immer gibt, sind auch andere Foldernamen erlaubt.
Bei GetFolders steht in der Liste für jeden Folder eine Zeile aus Foldernamen und der Anzahl der Mails, die dem Status entsprechen. Trenner ist ListDEL. Ergebnis ist die Anzahl der Folder, -1, wenn es den Status nicht gibt und -2 wenn das Login nicht geklappt hat.
Bei GetHeaders steht in der Liste für jede Mail eine Zeile, bestehend aus MessageNr, Absender und Betreff, getrennt durch ListDEL. Ergebnis ist die Anzahl der passenden Mails im Folder, -1. wenn es den Folder oder den Status nicht gibt oder -2, wenn das Login nicht geklappt hat.
Mit GetMail werden die Teile der Mailin die Listboxliste eingelesen. Ergebnis ist 0, wenn es geklappt hat, -1, wenn es den Folder oder die MailNr nicht gibt und -2, wenn das Login nicht geklappt hat.Ich denke, damit ist YXProfan X4 "Feature complete"!
Gruß
Roland -
Ohne unhöflich sein zu wollen: gibt es vielleicht noch Verbesserungen im Bereich FTP?
-
Mehr gibt es vorläufig nicht:
ftp("ListDir", Datei[, modus])
Wenn Modus weggelassen wird oder 0 ist, wird wie bisher ein ausführliches Listing in die Datei geschriebn, ist der Modus <> 0, stehen in der Datei nur die Dateinamen, die etwa mit move("FileToList", Datei) in die Listboxliste geschrieben werden können.Was fehlt denn noch Wichtiges?
Gruß
Roland -
Hallo Roland,
das ist schon mal super. Wenn ich hier wirklich Eibe Wunschliste loslassen kann:
- ListDir statt in Datei in die Listboxliste schreiben
- einheitliche Ausgaben für Dateieigenschafte oder extra Funktion dafür. Datum/Attribute/Besitzer etc.
- und ganz wichtig: Up- und Downloads wie bei Downloadfile im Hintergrund laufen lassen und eine Variable einführen mit der der Fortschritt abgerufen werden kann. Eventuell mit Abbruchmöglichkeit.Das wäre das, was dem Problem mit den unterschiedlichen Ausgaben von unterschiedlichen Servern entgegenwirken würde. Die letzte Funktion verhindert das einfrieren des Programms bei größeren Dateien und schließlich dem Komfort.
-
Diese Möglichkeiten bietet die von mir benutzte FTP-Unit leider nicht. Und offensichtlich sind deren Download-Funktionen auch nicht threadsicher. Meine bisherigen Versuche sind kläglich gescheitert.
Gruß
Roland -
Schade, ich hab auch leider keine DLL oder so gefunden.
-
Hm, ich habe in der Unit eine Möglichkeit gefunden, eine Datei im Hintergrund downzulaoadewn (ginge auch für Upload). Aber: Man kann trotzdem keine zweite Datei gleichzeitig herunterladen, da der FTP-Zugang ja so lange blockiert ist, bis die Datei herumntergeladen ist. Andererseits kann das Programm dezeit etwas anderes machen und müsste halt überprüfen (%ftpstatus), wann die Datei komplett ist und die nächste heruntergeladen werden kann.
(Man könnte natürlich einen weiteren Prozess starten, der einen eigenen FTP-Zugang erzeugt und dann natürlich glöeichzeitig eine weitere Datei laden könnte. Aber das ginge ja jetzt auch schon. XProfans Multiprozessing macht das recht einfach möglich.)Gruß
Roland -
Für mich ersonluch ist es kein Problem, wenn nur eine Datei runtergeladen wird. Wichtig ist mir, dass ich im Hintergrund zum Beispiel einen Fortschrittsbalken anzeigen lassen kann und evtl. den Down- oder Upload abbrechen, falls möglich. Das wäre ziemlich cool.
-
Also abbrechen geht nicht, bzw. geschieht automatisch, wenn Du das aufrufende Programm beendest, und den Fortschrittsbalken musst Du Dir halt selbst errechnen, in dem Du die Dateigröße der heruntergeladenen Datei mit der Größe des Originals vergleichst. Über den %FTPStatus kannst Du ermitteln, ob die Datei fertig herunter geladen wurde.
Gruß
Roland -
Selbst errechnen ist gar kein Problem. Abbrechen geht, wie du schon gesagt hast, mit einem zweiten Prozess und etwas Kommunikation. Das klingt echt super, freue mich schon aufs Experimentieren.
-
Jetzt hak ich doch hier nochmal nach. Roland, du hast ja meine Anfrage zum Mailempfang/Auslesen der Anzahl gesehen. Leider hast du dort kein Statement abgeben, ob das für dich noch in dieser Version realisierbar ist. Ich fürchte ja, ich muss dein Schweigen als "Nein" interpretieren. Oder hast du doch schon was in Petto?
Addendum: Oh - jetzt hab ich tatsächlich deine Antwort übersehen! Ganz großen Dank für den Einbau!!!
-
Wie ist der aktuelle Stand? Kommt noch eine neue Subscriptionversion?
-
Ja, die nächsten Tage. Ich hatte eine Woche Urlaub ohne PC!
Gruß
Roland -
Das ist kein Problem, aber gut zu wissen Urlaub ist natürlich wichtiger.
Ich hab momentan eh noch ein Problem mit Ftp("SetDir",...). Bei einigen Aufrufen scheint es wie blockiert zu sein. Ich hab mir jetzt eine Schleife geschrieben, die bis zu 10 Versuche unternimmt und spätestens beim dritten klappts jetzt immer. Seltsam, aber ich glaube nicht, dass es an mir liegt.Momentaner Workaround:
-
... und die neue Subscriptionsversion ist da!
Gruß
Roland -
... und die neue Subscriptionsversion ist da!
Super.
-
Eine kleine Erweitzerung für ADDFILES wird es noch geben:
AddFiles ZipDatei, 3
Im Modus 3 wird der erste Parameter als ZIP-Datei interpretiert und die Dateien in der ZIP-Datei der Listboxliste hinzugefügt.
Gruß
Roland... und ja: Ich werde in den nächsten Tagen eine neue Subscriptionsversion hochladen.
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!