Deutsch
Forum

Frage der Woche!

 
- 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!
 
25.08.2008  
 



 
- 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:
Len% = Lg(Zahl&) + 1

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
...
Set("Decimals",15)
Print 10^3.64777486' = ~4444
print "4444 hat",Int(Lg(4444)) + 1,"Stellen"
WaitInput
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
29.08.2008  
 




Frank
Abbing
Netter Versuch...
 
04.09.2008  
 



 
04.09.2008  
 




Frank
Abbing
Bitte nur Aufgabenstellungen, zu denen du selber auch eine Lösung weißt...
 
04.09.2008  
 



Hey, Du sollst doch nicht behaupten das dies nicht gegeben ist!
 
04.09.2008  
 



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

4 kB
Hochgeladen:09.09.2008
Ladeanzahl257
Herunterladen
 
09.09.2008  
 




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  [...]  ?
 
09.09.2008  
 



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!
 
09.09.2008  
 




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
 
15.10.2010  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

25.594 Betrachtungen

Unbenanntvor 0 min.
p.specht22.05.2013
mene06.12.2012
Peter Max Müller11.12.2011
Jens Tiburski29.12.2010
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie