| |
|
|
- Seite 1 - |
|
Frank Abbing | Vielleicht ist so ein Thread mal nett. Jemand stellt eine Programmier-Aufgabe und der Rest versucht, eine kurze und gute Lösung zu finden... Die beste Lösung könnte zu den Code-Snippets gepackt werden.
Meine Aufgabe für heute ist:
Finde eine kurze und schnelle Lösung um festzustellen, ob ein Directory leer ist oder nicht! |
|
|
| |
|
|
|
| |
|
- Seite 2 - |
|
Sebastian Sprenger | Jörg Sellmeyer
warum Du das noch durch Lg(10) teilst. Der ist doch 1 oder? Echt, ist er das? *ausprobier* Ja, er ist. Gut zu wissen. Man kann ja den Logarithmus zu einer bestimmten Basis (in meinem Fall 10) errechnen, aber wenn die Lg-Funktion bei 10 sowieso 1 ausgibt, kann's ja weggelassen werden. |
|
|
| Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32 Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM Windows Me, 1.8 Ghz, 256 MB RAM | 29.08.2008 ▲ |
|
|
|
| |
|
- Seite 3 - |
|
|
Jörg Sellmeyer | Lg ist ja der dekadische Logarithmus. Korrekterweise ist die Länge einer Zahl:
Weil damit die Potentaten (also die Potenzzahl) ermittelt wird mit dem 10 potenziert wird, um die Zahl zu erhalten: 10^0 = 1 10^0.nnnnn = Wert zw. 1 und 9.9Periode 10^1 = 10 10^1.nnnnn = Wert zw. 10.nnnn und 99.9Periode 10^2 = 100 10^2.nnnnn = Wert zw. 100.nnnn und 999.9Periode 10^3 = 1000 10^3.nnnnn = Wert zw. 1000.nnnn und 9999.9Periode ...
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 29.08.2008 ▲ |
|
|
|
|
Frank Abbing | Netter Versuch... |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Frank Abbing | Bitte nur Aufgabenstellungen, zu denen du selber auch eine Lösung weißt... |
|
|
| |
|
|
|
| Hey, Du sollst doch nicht behaupten das dies nicht gegeben ist! |
|
|
| |
|
|
|
| Also ich weiss leider keine Lösung zu der unten folgender Aufgabe. Vorgeschichte: Vor Jahren gabs mal ein Spracherkennungsprogramm namens G-Vox, das hatte statt eines Windows zur Steuerung ein rundes grünes Ding mit mehr oder weniger versteckten Erhebungen, die beim Mausklicken gelber wurden, sich verformten und beim (zeitgefächerten) Loslassen jeweils bestimmte Optionen schalteten (also kurzer, mittellanger und langer Klick bewirkten was unterschiedliches).
Das Ding konnte ausserdem auf dem Desktop-Hintergrund wie eine Gummischeibe rumgeschubst werden und wurde von den Bildschirmkanten billardmässig reflektiert. Alle anderen Desktop-Elemente waren funktional (!), und in einem bestimmten Modus wich das Ding sogar der Maus aus, wenn es was verdeckte, das man darunter anklicken wollte. Ist bestimmt Musterschutz oder so drauf, aber: Das Prinzip selbst, nämlich wie man etwas nicht-rechteckiges über den funktionierenden Desktop bewegen kann, würde mich interessieren.
Nostalgischer Hintgergrund: Ich würde gerne meinen 3D-Papierflieger von anno Schnee über den Destop fliegen lassen... Code von dunnemal anbei. Gruß, Specht |
|
|
| |
|
|
|
Jörg Sellmeyer | Da gibt's was von Thomas Hölzer, was man anpassen könnte:
$H Windows.ph
$I profalt.inc
' PRFellow - Vorlage
' Zeigt, wie man ein rundes Fenster simuliert
' Autor: Thomas Hölzer
' Benötigt Profan 6.0 (32)
Def CreateEllipticRgn(4) !"GDI32","CreateEllipticRgn"
Def DeleteObject(1) !"GDI32","DeleteObject"
Def InvertRgn(2) !"GDI32","InvertRgn"
Def PaintRgn(2) !"GDI32","PaintRgn"
Def SetWindowRgn(3) !"USER32","SetWindowRgn"
Def ReleaseCapture(0) !"USER32","ReleaseCapture"
Proc DrawTime
Declare t$
Rectangle 120,140-190,160
Let t$=Time$(0);":";Left$(Time$(1),2)
DrawText 120,140,t$
EndProc
'##################################
Proc Schieben
SetWindowPos %hwnd = (Rnd(%maxx -300) + 300),(Rnd(%maxy -300) + 300) - 300,300
EndProc
'###################################
Declare ende%,rgn&,x%,move%
SetTrueColor 1
WindowStyle $78
WindowTitle "Rundes Fenster"
Window 0,0-300,300
UserMessages 16
Let rgn&=CreateEllipticRgn(0,0,300,300)
SetWindowRgn(%hwnd,rgn&,1)
Cls RGB(0,0,255)
UseFont "Arial",20,0,0,0,0
UseBrush 1,RGB(0,0,255)
UsePen 5,0,0
TextColor RGB(255,255,255),-1
DrawText 80,80,"Rechte Maustaste!"
DrawTime
SetTimer 1000
'#########################################
Var Timer& = ~SetTimer(%hwnd,1,1000,ProcAddr(Schieben,0))
'#########################################
WhileNot ende%
WaitInput
Case %umessage = 16:Break
If %wmTimer
DrawTime
If move%
SetWindowPos %hwnd=x%,0-300,300
Add x%,10
Case Gt(x%,%maxX):Let x%=0
EndIf
EndIf
If Equ(%message,$204)
CreateMenu
AppendMenu 1, "&Invertieren"
IF move%
AppendMenu 2,"&Anhalten"
Else
AppendMenu 2, "B&ewegen"
EndIf
AppendMenu 3,"&Farbe ändern"
Separator
AppendMenu 4,"&Beenden"
TrackMenu %MouseX,%MouseY
If MenuItem(1)
InvertRgn(%hdc,rgn&)
Elseif Menuitem(2)
Let move%=Not(move%)
ElseIf MenuItem(3)
Randomize
' Mit Region-Funktion:
' UseBrush 1,RGB(Rnd(256),Rnd(256),Rnd(256))
' PaintRgn(%hdc,rgn&)
' Das tuts freilich auch...
Cls RGB(Rnd(256),Rnd(256),Rnd(256))
DrawTime
ElseIf MenuItem(4)
Let ende%=1
Endif
Elseif Equ(%message,$201)
UseCursor 5
Sendmessage(%hwnd,$0112,$0F012,0);
UseCursor 0
ReleaseCapture()
EndIf
Wend
KillTimer
'#####################
~KillTimer(%hwnd,Timer&)
'#####################
SetWindowRgn(%hwnd,0,0)
DeleteObject(rgn&)
End
Netter Flieger! |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 09.09.2008 ▲ |
|
|
|
|
| Meinst Du winform [...] ? |
|
|
| |
|
|
|
| Muss erst mal lernen, was die ~-Dinger machen... Bitte wo bekomme ich profalt.inc ? (Suche im Profan-Verzeichnis und hier leider negativ...)
1. Ergänzung: Das mit runden Fenstern klingt schon mal recht gut ... 2. Ergänzung: WOW, heißt das Windows selbst kann das bereits? Teufel noch mal, dann werde ich doch noch API-Freund... 3. Ergänzung: Hey ich hab ein Dreieckiges Fenster erzeugt! --> Schneekönig!!! Danke! |
|
|
| |
|
|
|
Jörg Sellmeyer | und mit CombineRgn kann man dann noch verschiedene Formen zusammenfügen. Die Profalt.inc brauchst Du nicht, da in XProfan10 die Funktionen Add, Sub u.s.w. noch funktionieren. Ab 11 sind nur noch Operatoren zulässig.
Die ~-Dinger (nennt man übrigens Tilde) leiten Ersatzbegriffe ein, die aus einer externen Datei (hier Window.ph) die eigentlichen Werte/Funktionsnamen o.ä. eingelesen werden. ~KillTimer(...) steht dann für External("User32","KillTimer",....) Sieh mal unter Header-Dateien nach. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 10.09.2008 ▲ |
|
|
|
|
| Hallo, ich hätte auch eine kleine Aufgabe für euch, ist aber ein bischen schwerer, und zwar es gibt unter Windows 7 so eine Funktion wo man einstellt in welchen Modus der Rechner gerade läuft (befindet sich im Systemtray). Es gibt da den Energiesparmodus und den Hochleistungmodus. Meine Frage dazu lautet kann man mit XProfan ein Programm schreiben was autommatisch in den Moden wechselt, d.h. wenn z.B. die CPU-Nutzung niedriger als 50 ist wechselt er in den Energiesparmodus und wenn sie höher ist in den Höchsleistungsmoodus oderr so. Am besten wäre natürlich wenn das Programm in Hintergrund laufen würde oder nur im Systemtray zu sehen wäre? Naja vlt fällt euch ja ne Lösung ein oder, es wäre echt sehr Praktisch wenn er automatisch in den Moden weckseln würde!!!!
mfg
Julian57 |
|
|
| |
|
|