Programmierhilfe-Prozeduren

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Programmierhilfe-Prozeduren

Beitrag von Hroudtwolf »

Entfernt. Out of date.
Zuletzt geändert von Hroudtwolf am 05.03.2008 02:27, insgesamt 1-mal geändert.
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Gut, aber könntest du nen kleinen Überblick der Funktionen machen? Und dann wären die CodeTags noch angebracht:

[ code]DeinCode[ /code]

mach die Leerzeichen nach [ weg, dann funktionierts.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Kristel
Beiträge: 72
Registriert: 30.08.2004 00:17

Beitrag von Kristel »

Hroudtwolf hat geschrieben:

Code: Alles auswählen

Procedure.s GetRunlevel() 
  a = GetSystemMetrics_(#SM_CLEANBOOT) 
  If a=0:md$="Normal":EndIf 
  If a=1:md$="Failsafe":EndIf 
  If a=2:md$="Failsafe and Networkboot":EndIf  
  ProcedureReturn Trim(md$) 
EndProcedure
Die 3 If's kann man perfekt zu Select Case umformen.
Läuft dann wahrscheinlich auch schneller, wobei die Proc
ja eh selten aufgerufen wird. Die Variable a sparst du auch gleich. :)

Code: Alles auswählen

Procedure.s GetRunlevel() 
  Select GetSystemMetrics_(#SM_CLEANBOOT)
    Case 0
      md$="Normal"
    Case 1
      md$="Failsafe"
    Case 2
      md$="Failsafe and Networkboot"
  EndSelect    
  ProcedureReturn Trim(md$) 
EndProcedure
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Cool, hätte ja nicht gedacht dass bei Spezialtasten von Mäusen diese korrekt in der Anzahl erkannt werden. Aber es klappt. Mit "GetMouseButtons()" wurde die korrekte Anzahl zurückgegeben. (Und wer nun Bedenken hat, seine Maus hätte so viele Spezialtasten, also 8 wurden noch erkannt) ;)
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1755
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Mal noch eine Anregung: die Prozedur Date() überschneidet sich mit dem vorhandenen PB-Befehl. Sollte also auch noch geändert werden.

@Hroudtwolf: wenn alle sinnvollen Änderungen eingeflossen sind, nehme ich Deinen Code gerne ins CodeArchiv auf. :wink:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Programmierhilfe

Beitrag von Hroudtwolf »

Entfernt. Out of date.
Zuletzt geändert von Hroudtwolf am 05.03.2008 02:27, insgesamt 2-mal geändert.
Kristel
Beiträge: 72
Registriert: 30.08.2004 00:17

Beitrag von Kristel »

Hier mal meine Version von ExaktDate

Code: Alles auswählen

Procedure.s ExaktDate(prm)
  GetLocalTime_(@s.SYSTEMTIME)
  Monat$=Str(s\wMonth)
  Tag$=Str(s\wDay)
  If Len(Monat$)=1:Monat$="0"+Monat$:EndIf
  If Len(Tag$)=1:Tag$="0"+Tag$:EndIf 
  Select prm
    Case 1
      Datum$=Tag$+"."+Monat$+"."+Str(s\wYear)
    Case 2
      Datum$=Str(s\wYear)
    Case 3
      Datum$=Tag$
    Case 4
      Datum$=Monat$
    Case 5
      Datum$=Monat$+"\"+Tag$+"\"+Str(s\wYear)
    Case 6
      Datum$=Monat$+"\"+Right(Str(s\wYear),2)
  EndSelect
  ProcedureReturn Datum$
EndProcedure
Hab nur die ganzen If's wieder durch Select Case ersetzt.
Bei GetRunlevel() war das ja noch nicht so Speed entscheidendt,
aber eine Datumsfunktion ruft man bestimmt öfter auf. Bei
ExaktTime(prm) das gleiche Spielchen. Nur ist es da wahrscheinlich
noch gravierender als bei GetRunlevel(), wenn man z.B. eine Uhr
proggt. Hab noch viele Dinge gesehn, die du optimieren könntest, aber
dieses ist mir einfach ins Auge gesprungen.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@Hroudtwolf

wenn du schonmal gePOSTeten code nochmal überarbeitet hast, kannst du auch das erste post ändern, und nurnoch 'ne notiz posten... spart platz im forum... :wink:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

mhh, bei größeren Änderungen sollte man IMHO schon den neuen Code extra posten.
Bei Tippfehlern oder so kann mans nat. gleich im ersten Code ändern,
aber gefallen tuts mir so wies Hroudtwolf gemacht hat, besser.

Es ist halt auch interessant, zu erfahren, was geändert wurde, und wie die alte Version aussah. Vielleicht sagt mir die Neue ja nicht zu.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Sinnvolle Einrückungen für mein empfindliches Auge fehlen leider auch.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten