Algorithmen, Teil IX.: Computer und andere Haustiere

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • Abt. XPIA-Funktionstest
      ===============
      Läuft's oder nicht? Wenn nicht, sollte man das XPIA-Arbeitsverzeichnis im LemonEd prüfen sowie erfordelrichenfalls Zugriffsrechte auf die Arbeitsverzeichnisse gewähren. Bei mir hat's grad geklappt.
      Gruss

      Quellcode

      1. WindowTitle "Mit Frank Abbing's XPIA Max() und Min() eines Float-Arrays suchen"
      2. Window 0,0-%maxx,%maxy
      3. declare anzahl&
      4. print "\n Gewünschte Anzahl an Fließkommazahlen im Array ?: ";
      5. input anzahl&
      6. case anzahl&=0:anzahl&=25
      7. Declare Tabelle_1![anzahl&],Tabelle_2![2],x&,y&,z&,text$
      8. Print " ";anzahl&;" zufällige Fließkommazahlen werden generiert."
      9. Randomize
      10. Tabelle_1![]=Rnd(100000)/1.09-50000
      11. Print " Bereit für die Suche. Drücken Sie eine Taste!"
      12. 'Assemblerfunktions-Parameters:
      13. ' Adresse von Tabelle mit Floats, Adresse der Zieltabelle, Anzahl Floats
      14. Waitinput
      15. $MAKE CLE
      16. AsmStart FindEdge
      17. Parameters addr(Tabelle_1![0]), addr(Tabelle_2![0]), anzahl&,0
      18. jmp weiter
      19. flo1 dq 0
      20. flo2 dq 0
      21. weiter:
      22. ;
      23. ; Höchste Floatzahl ermitteln
      24. ;
      25. mov edx,para1
      26. mov ecx,para3
      27. lea ebx,flo1
      28. mov eax,[edx]
      29. mov [ebx],eax
      30. mov eax,[edx+4]
      31. mov [ebx+4],eax
      32. schleifei:
      33. lea ebx,flo2
      34. mov eax,[edx]
      35. mov [ebx],eax
      36. mov eax,[edx+4]
      37. mov [ebx+4],eax
      38. push ecx
      39. push edx
      40. fld flo2
      41. fcomp flo1
      42. fnstsw ax
      43. shr ah,1
      44. jc is_less
      45. is_more:
      46. pop edx
      47. pop ecx
      48. lea ebx,flo1
      49. mov eax,[edx]
      50. mov [ebx],eax
      51. mov eax,[edx+4]
      52. mov [ebx+4],eax
      53. jmp is_ready
      54. is_less:
      55. pop edx
      56. pop ecx
      57. is_ready:
      58. add edx,8
      59. sub ecx,1
      60. jne schleifei
      61. mov edx,para2
      62. lea ebx,flo1
      63. mov eax,[ebx]
      64. mov [edx],eax
      65. mov eax,[ebx+4]
      66. mov [edx+4],eax
      67. ;
      68. ; niedrigste Zahl ermitteln
      69. ;
      70. mov edx,para1
      71. mov ecx,para3
      72. lea ebx,flo1
      73. mov eax,[edx]
      74. mov [ebx],eax
      75. mov eax,[edx+4]
      76. mov [ebx+4],eax
      77. xschleifei:
      78. lea ebx,flo2
      79. mov eax,[edx]
      80. mov [ebx],eax
      81. mov eax,[edx+4]
      82. mov [ebx+4],eax
      83. push ecx
      84. push edx
      85. fld flo2
      86. fcomp flo1
      87. fnstsw ax
      88. shr ah,1
      89. jc xis_less
      90. xis_more:
      91. pop edx
      92. pop ecx
      93. jmp xis_ready
      94. xis_less:
      95. pop edx
      96. pop ecx
      97. lea ebx,flo1
      98. mov eax,[edx]
      99. mov [ebx],eax
      100. mov eax,[edx+4]
      101. mov [ebx+4],eax
      102. xis_ready:
      103. add edx,8
      104. sub ecx,1
      105. jne xschleifei
      106. mov edx,para2
      107. lea ebx,flo1
      108. mov eax,[ebx]
      109. mov [edx+8],eax
      110. mov eax,[ebx+4]
      111. mov [edx+12],eax
      112. AsmEnd
      113. Print
      114. Print " Größe des Arrays: ";anzahl&;" Float-Werte"
      115. Print " Höchster Wert aus dem Array = " + Str$(Tabelle_2![0])
      116. Print " Niedrigster gefundener Wert = " + Str$(Tabelle_2![1])
      117. Print " Fertig.":beep
      118. WaitInput
      119. End
      Alles anzeigen
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Spezielle mathematische Funktionen
      ==========================
      Gleich über 200 davon finden sich bei 'Hypergerd' Gerd Lamprechts Online im Net!
      So kann man z.B. numerische Lösungsalgorithmen verifizieren!

      Hier gibt's einen Online-Ableitungsrechner! Der kann sogar den Rechengang zeigen!

      Und daneben einen Online-Integralrechner, der auch gleich die Funktionsgraphen plottet!

      Weiters ist eine Präzisionsausgabe aller Elliptischen Integrale online verfügbar.

      Wer eine neue Folge oder Reihe (Summenfolge) gefunden hat, kann die hier bekanntgeben.

      Und hier eine Online-Ausgabe der Funktionenbibel aller Mathematiker, herausgegeben von Milton Abramowitz and Irene A. Stegun (Abramowitz ist übrigens kürzlich verstorben).

      Kurvendiskussion Online - auch nicht schlecht!

      Seine Funktionsgraphen kann man bei Walter Zorn online zeichnen lassen.

      Gruss

      P.S.: Wer jetzt auf den Geschmack gekommen ist, kann sich jede Menge
      pdf-Skripten von Mathe online holen!
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

      Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von p. specht ()

    • p. specht schrieb:

      Abt. XPIA reloaded
      ============
      1) Frank Abbing's genialen Inline-Assemblercodegenerator gibt es weiterhin inoffiziell (ohne Suport und gänzlich auf eigenes Risiko) auf seiner Homepage zum Download: XPIA.
      Leider funktioniert Dein Link zu XPIA nicht! Bei mir lädt er immer nur eine Datei namens XPIA.EXE.ZIP mit 0 Bytes hinunter!

      Gruß
      Roland
      (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
      AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


      http://www.xprofan.de
    • Falschmeldung, Sorry, meine Schuld: Milton Abramowitz starb 1956, Irene Stegun übernahm dann die Herausgabe der berühmten Formelsammlung im NBS (heute NIST). Sie selbst starb 2008.
      War wohl ein anderer, dessen Hinscheiden da gemeldet wurde...
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Catch me if you can
      ===============
      In vielen älteren Programmen verwende ich noch den PRINT-Befehl. Er gilt allerdings als Relikt aus DOS-Zeiten. Allmählich ist es also an der Zeit, ihn durch DRAWTEXT zu ersetzen, dieser Textzeichenbefehl folgt allerdings einem anderen, dem Pixel-Koordinatensystem. Nun wollte ich endlich eine Formel finden, womit die bisherigen Positions-Koordinaten halbwegs gut in Pixelkoordinaten umgerechnet werden können, ohne daß der Textbeginn plötzlich ganz wo anders erscheint. Bei meinen eigenen Bildschirmauflösungen und einer Standardschrift wie Arial scheint das zu klappen.

      Wie sieht das bei Euch aus?
      Gruss

      P.S.: Die neuere Proportionalschrift sorgt leider dafür, daß die Textlängen noch nicht stimmen.

      Quellcode

      1. Windowtitle "Catch me if you can!"
      2. Windowstyle 24:font 2:randomize
      3. Window 0,0-%maxx,%maxy
      4. cls rgb(180+rnd(76),180+rnd(76),180+rnd(76))
      5. declare x!,y!,h&,b&
      6. ' Höhe und Breite des gezeichneten Textfonts:
      7. h&=15:b&=8
      8. ' x- und y-Position für Print "+" in Positionskoordinaten
      9. x!=145:y!=58
      10. repeat
      11. color 0,15:locate 2,1:print " ";:locate 2,2:print int(x!),int(y!)
      12. ' Zielkreuz schreiben mit PRINT:
      13. locate int(y!+0.49999),int(x!+0.49999):print "+";
      14. waitinput 100
      15. 'Fang-Kreis als Font zeichnen:
      16. UseFont "Arial",h&,b&,1,0,0:textcolor rgb(255,0,0),-1
      17. ' Hier Catch-Formel prüfen und ggf.anpassen:
      18. drawtext (x!-1)*b&-b&/2+1,y!*h&*0.865-h&+2,"O"
      19. waitinput 100 : x!=x!-2:y!=y!-1
      20. until (%key=27) or (x!<0)
      21. END
      Alles anzeigen
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von p. specht ()

    • Abt. Geburtstagszwillinge
      =================
      Es scheint erstaunllich, aber die Chance daß in einer Schulklasse von 25 Schülern mindestens zwei am gleichen Tag des Jahres Geburtstag feiern beträgt bereits fast 60 %! Das nachstehende Progi zeigt, wie diese Wahrscheinlichkeit mit der Gruppengröße (in Nicht-Schaltjahren) wächst.
      Gruss

      Quellcode

      1. Windowtitle "Wahrscheinlichkeit, daß in einer Gruppe mindestens "+\
      2. "zwei Personen am selben Tag Geburtstag feiern:"
      3. Windowstyle 24:randomize:cls:declare n&,f!,k&
      4. repeat :Print "\n Wieviele Personen treffen zusammen?: ";:input n&
      5. case n&<=0:break
      6. Print "\n Die Wahrscheinlichkeit, daß 2 oder mehr dieser ";n&;" Personen"
      7. Print " am selben Tag Geburtstag feiern beträgt ";:font 2
      8. k&=365:f!=1:whileloop n&:f!=f!*(366-&Loop)/365:endwhile
      9. print format$("#0.000 %",(1-f!)*100):font 0
      10. until %key=27:font 2:Print "\n Es war sehr schön, es hat mich sehr gefreut!"
      11. font 0:waitinput 3000:End
      Alles anzeigen
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Aktiv im Radio
      ============
      Falls wieder mal ein Kernkraftwerk hochgeht (oder in ähnlich blöden Fällen) könnten professionelle Geigerzähler schnell vergriffen sein. Diesfalls kann man sich einen solchen aber auch aus einschlägig angebotenen Elektronik-Bausätzen zusammenlöten. Kleiner Nachteil dieser preiswerten Bausätze: Sie weisen keine Kalibrierung auf, sondern lassen in einem kleinen Lautsprecher allenfalls ein lustiges Knacksen hören. In dieser Konfiguration eigenen sie sich daher eher für das Zählen der Geiger in Orchestern als für ernsthafte Anwendungen :-)

      Das lässt sich aber ändern: Durch Nachschaltung eines schnellen elektronischen Zählers könnte man zumindest ermitteln, wie lange man sinnvoller Weise keinen Freilandsalat essen sollte. Üblicherweise reichen 5 bis 6 Halbwertszeiten aus, um etwa durch Regenfälle die strahlenden Isotope in zumindest 1/2 m Erdtiefe spülen zu lassen. Sollten unsere transatlantischen Freunde z.B. Ihr Ukraine-Monopoly bis zum Ende durchspielen, dann liefert uns unser Gerät zumindest ein Indiz dafür, wie lange wir die Kinder besser nicht rauslassen sollten. Dabei hilft eventuell das folgende Progrämmchen, vorausgesetzt euer Laptop übersteht den EMP und hat dann noch etwas Akku-Ladung.
      Gruss

      Quellcode

      1. WindowTitle "Halbwertszeit"
      2. WindowStyle 24
      3. cls
      4. declare n&,m&,x&,y&,T&,hwz!
      5. Print "\n Die Radioaktivität eines Isotops wird mittels Geigerzähler "
      6. print " gemessen: Der Geigerzähler knackst dabei in N Sekunden X mal. "
      7. Print " T Stunden später wird das Experiment wiederholt und man misst "
      8. print " dabei nun in M Minuten Y mal ein Knacksen. "
      9. print " Welche Halbwertszeit hat das gemessene radioaktive Isotop? \n"
      10. Repeat
      11. print
      12. print " 1. Messung: Messzeit N [sek]= ";:input n&
      13. case n&=0:break
      14. print " Anzahl Knackse X = ";:input x&
      15. print " Die nächste Messung erfolgt nach T Stunden. T = ";:input t&
      16. print " 2. Messung: Messzeit M [sek]= ";:input m&
      17. print " Anzahl Knackse Y = ";:input y&
      18. print
      19. if x&<=1:font 2
      20. print " Es handelt sich um ein stabiles Element. "
      21. case y&>1:print " Dieses wurde inzwischen mit Neutronen beschossen."
      22. font 0
      23. continue
      24. endif
      25. if (x&/n&)=(y&/m&):font 2
      26. print " Es handelt sich um eine technische Quelle. "
      27. print " (Die Halbwertszeit geht gegen Unendlich!) \n":font 0
      28. continue
      29. endif
      30. print " Die Halbwertszeit des Isotops beträgt: "
      31. hwz!=t&*ln(0.5)/(ln(1-(X&-Y&*N&/M&)/X&))
      32. font 2:print " ";hwz!;" Stunden."
      33. case hwz!>48:print " bzw. ";format$("%g",hwz!/24);" Tage"
      34. case hwz!>(24*7):print " bzw. ";format$("%g",hwz!/(24*7));" Wochen"
      35. case hwz!>(24*365.25):print " bzw. ";format$("%g",hwz!/(24*365.25));" Julianische Jahre"
      36. case hwz!<0:Print " Vorsicht, es handelt sich um eine Bombe!\n"
      37. font 0
      38. waitinput
      39. Until %key=27
      40. End
      Alles anzeigen
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Andere Kalender
      ==============
      Sind die Kalenderregeln des christlich-gregorianischen Kalenders schon nicht einfach (Alle 4 Jahre ein 29. Februar eingefügt - es sei denn das Jahr ist durch 100 teilbar - aber dennoch, falls das Jahr durch 400 teilbar ist), so gelten in anderen Religionen noch deutlich kompliziertere Regeln. Das nachfolgende Progi kann daher nur ungefähre Näherungen beinhalten. Will man es genau wissen sollte man entsprechend ausführliche Internetseiten befragen.
      Gruss

      P.S.: Im Islamischen Kalender ist das erste Jahr (622 n.Chr) z.B. gleich um 2 Monate kürzer, etc. etc. Selbst die Frage, wann ein Tag beginnt, ist nicht einheitlich geregelt, m Jüdischen Kalender z.B. um 18:00 Uhr abends.

      Quellcode

      1. Windowtitle "Einfache Näherungsformeln für Islamisches und Jüdisches Kalenderjahr"
      2. ' Q: https://de.wikipedia.org/wiki/Islamische_Zeitrechnung#Umrechnung
      3. ' Q: https://de.wikipedia.org/wiki/J%C3%BCdischer_Kalender
      4. ' OHNE JEDWEDE GEWÄHR!
      5. WindowStyle 24:cls:font 2:declare j&
      6. repeat :Print "\n Jahreszahl nach Gregorianischem Kalender: ";:input j&
      7. print "\n Jahr nach Islamischer Zeitrechnung in etwa: ";int(0.5+32/33*(j&-622));
      8. print "\n Jahr nach Modern-Jüdischer Zeitrechnung ca: ";int(365.2468/365.2425*(j&+3760+(j&<=0))+.5);"\n"
      9. until %key=27
      10. End
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Mittel-Mittelwerte
      ==============
      Es gibt einfache Fragen, zu denen keine einfachen Antworten existieren: Papi, warum ist der Himmel blau? Weil sich das Meer drin spiegelt, Kind! Und warum ist das Meer blau? - Weil sich der Himmel drin spiegelt ... äh... Geh endlich schlafen!!

      Das selbe passiert ziemlich oft auch in der Mathematik: Papi, wie lang ist der Bogen einer Ellipse? Papi: "Moment, habs gleich ... Verflixt, ich finde keine einfache Formel dafür! Geh endlich schlafen!" Da meldet sich Opa Gauß: "Das hatte ich doch wo notiert ... Es kommt natürlich auf die Form der Ellipse an UND auf die Frage, von wo bis wo gemessen wird. Das beliebige Verhältnis der Ellipsenachsen zueinander ruiniert leider jede geschlossene Formel. Aber ich hatte da doch..." Opa Gauß blättert in einem vergilbten kleinen Notizbuch. "Ah, da ist es ja: Man kann die Parameter "Achsenverhältnis" und "Von wo bis wo wird gemessen" nach einer von mir damals gefundenen Beziehung ("AGM") gegeneinander sukzessive abtauschen! Man versucht dann auf diese Weise, das Achsenverhältnis 1 werden zu lassen, dann haben wir es plötzlich mit einem Kreis zu tun, und der andere Parameter liefert dann das Ergebnis via die für Kreise bestens bekannte Umfangsformel." "Genial, Opa! Aber warum ist der Himmel blau?" "Äh... geh schlafen, Kind!"

      Gruss

      Brainfuck-Quellcode

      1. WindowTitle "Den Arithmetisch-geometrischen Mittelwert AGM(a,b) berechnen"
      2. '(CL) CopyLeft 2015-08 by P.Specht, Wien (Austria); OHNE JEDE GEWÄHR!
      3. 'Quelle u.a. http://www.math.cornell.edu/~hubbard/RationalLandenTrans.pdf
      4. WindowStyle 24:Cls:declare a!,b!,sgn!,tmp!,c$:set("decimals",18)
      5. print "\n Für Parameterwerte a und b wird der von C. F. Gauß entwickelte"
      6. print " Arithmetisch-geometrische Mittelwert iterativ errechnet. Der hat"
      7. print " die Eigenschaft, Invarianztransformationen der Elliptischen Funk-"
      8. print " tionskurven (sprich Parameter-Abtausch) zu ermöglichen, ohne daß"
      9. print " der Funktionswert selbst verändert wird. (Das ermöglichte später"
      10. print " schrittweise Näherungen für Funktionswerte, für die keine Formel"
      11. print " existiert wie zB die Bogenlänge von Ellipsen, Lemniskaten etc. )"
      12. print " ----------------------------------------------------------------\n"
      13. Font 2
      14. Lauf:
      15. print " Wert a = ";:input c$:a!=val(c$)
      16. print " Wert b = ";:input c$:b!=val(c$)
      17. print " ----------------------------------------------------------------"
      18. print " a b "
      19. print " ";format$("%g",a!),tab(40);format$("%g",b!)
      20. tmp!=a!*b!:sgn!=(tmp!>0)-(tmp!<0)
      21. Repeat
      22. tmp! =(a!+b!)/2
      23. b!=sgn!*sqrt(abs(a!)*abs(b!))
      24. a!=tmp!
      25. print " ";format$("%g",a!),tab(40);format$("%g",b!)
      26. until format$("%g",a!)=format$("%g",b!)
      27. print " ----------------------------------------------------------------"
      28. locate %csrlin-2,30:print "<=AGM=>\n\n";
      29. waitinput
      30. CLS
      31. print " ----------------------------------------------------------------"
      32. goto "Lauf"
      Alles anzeigen
      P.S.: Zur Sache mit dem Himmel gibt es einige Internetadressen:
      Etwas unbefriedigend: wissen.de/warum-ist-der-himmel-blau
      Schon besser: phyx.at/blauerhimmel/
      Bullshit: spektrum.de/frage/warum-ist-der-himmel-blau/1223163
      Nicht schlecht: de.wikipedia.org/wiki/Himmel_(planet%C3%A4r)#Das_Himmelsblau
      Kann man gelten lassen: weltderphysik.de/thema/hinter-…himmelsblau-und-abendrot/
      Physikalisch richtig, löst aber nur Teilfrage: de.wikipedia.org/wiki/Rayleigh-Streuung
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von p. specht ()

    • Abt. Schaltjahrsregeln nicht genau genug? :-D
      ==========================
      Der Gregorianische Kalender sorgte bekanntlich dafür, daß auf das Julianische Datum 4. Okt. 1582 das gregorianische Datum 15. Okt. 1582 folgte. Ziel war dabei, den 21. März jeden Jahres (Frühlingsbeginn) wieder auf den astronommisch-natürlichen Frühlingspunkt (Sonnenaufgang genau im Osten) zu schieben, wie das die hohen katholischen Würdenträger am Konzil von Niccäa einst festgelegt hatten. Die gute Absicht war aus dem Ruder gelaufen, weil das Sonnenjahr (Frühlingspunkt-Durchlauf zu Frühlingspunkt-Durchlauf) eben doch nicht 365,25 Tage dauert, sondern nur 365,2425 plus ein paar zerquetschte Nachkommastellen. Die neue Regel von Papst Gregor, daß alle 400 Jahre DOCH ein Schaltjahr sein sollte, behob das Desaster einstweilen.

      Leider summiert sich der Rest aber im Laufe von 3300 Jahren doch auf einen ganzen Tag. Vorausschauende Astronomen schlugen daher vor, die Sache mit den blöden Schaltsekunden (bis zu 2 pro Jahr, sh. de.wikipedia.org/wiki/Schaltsekunde) doch endlich sein zu lassen und dafür die Jahre 4800, 8000 und 11200 doch kein Schaltjahr sein zu lassen. Naja, da tut uns nix mehr weh ...

      Gruss

      P.S.: Der gregorianische Kalender wurde nicht in allen Ländern gleichzeitig eingeführt, sondern dieser Prozeß zog sich über mehrere Jahrhunderte, siehe de.wikipedia.org/wiki/Gregoria…gregorianischen_Kalenders
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von p. specht ()

    • Abt. Atommassen-Angaben
      =================
      Seit 1961 erfolgt die Angabe von Atommasse in "U" (U steht für "Unit",
      was in etwa der Masse eines Kernbausteins (Neutron, Proton) entspricht.
      (Nur in UK und USA wird 1 u auch noch als "1 Dalton" bezeichnet).

      1 u = 1.660538921 * 10^-27 kg (Wertbasis für Tabellenwerke ab 1961)

      1 u entspricht 1⁄12 der Masse eines isolierten Atoms des Kohlenstoff-
      Isotops 12C6 im Grundzustand, also

      1 u = 1.660539040(20)*10^-27 kg (NIST CODATA 2010)
      1 u = 931.4940954(57) MeV/c^2
      Spoiler anzeigen
      Umrechnung in die SI-Einheit 'u' :
      1 kg = 6.022140857(74)*10^26 u bzw.
      = 6.022140857(74)*10^23 [1/mol] (Avogadro-Konstante)
      ------------------------------------------------------------------
      Anmerkung:
      Alte Einheiten (1960 und davor) nahmen Bezug auf 1/16 des Luft-Sauerstoffs,
      neue Einheiten auf 1/12 Kohlenstoffatom. Die Physiker unterschieden dabei
      noch zwischen Allein-Masse des Nukleons und Bindungsenergie (Massendefekt):
      1 u(1961-)= 1.0003179 amu(alt, physikalisch)= 1.000043 amu (alt, chemisch)
      --------------------------------------------------------------
      Da der Kern des 12C-Atoms 12 Nukleonen enthält, ist die Einheit 'u'
      annähernd gleich der Masse eines Neutrons oder Protons.
      Spoiler anzeigen
      Anmerkung zur Bedeutung obiger Klammer-Angaben ( ):

      6.022140857(74) bedeutet:
      -------------------
      = 6,022140857
      +/-0,000000047 = +/- 1 Sigma, also:
      -------------------
      - : 6,022140810
      +: 6,022140904 ... die sog. 1-Sigma-Grenzen:
      -------------------
      Sigma ist das Formelzeichen für die statistische Standardabweichung:

      Sigma=SQRT(SUMME[(Meßwerte - Arithm.Mittelwert)^2]/Anzahl_Messwerte)

      Es wird symmetrische Messwertverteilung gemäß Gauss-Glockenkurve
      unterstellt. +/-1 Sigma (sh. oben) bedeutet dann, daß sich
      innerhalb dieser Wertgrenzen 68,27 % aller Messergebnisse bewegen.
      Will man statt dessen ...
      [ 50 % , 90 % , 95% , 99% ]
      aller Messwerte erfassen, so ist der Klammerwert mit
      [ 0.675, 1.645, 1.960, 2.576 ] zu multiplizieren.
      --------------------------------------------------------------

      Beispiel: Absolute Atommasse von Wasserstoff: 1.00794(1) u

      Die relative Atommasse
      ---------------------------
      ist dann ein Mittelwert aller Elemente und Isotope des entsprechenden
      Elements gemäß ihrer natürlichen Zusammensetzung in unserer Umwelt -
      und zwar relativ zu 1/12 des 12C.
      Spoiler anzeigen
      STOFF u_rel:
      ------------------------------
      Wasserstoff H: 1.008
      nat. Chlor Cl: 35.453
      nat. Sauerstoff O: 15.999
      nat. Stickstoff N: 14.007
      nat. Kohlenstoff C:12.011 (Isotope !)
      Erd-Silizium Si: 28.0855
      Gold Au: 196.966569
      Eisen Fe: 55.845
      Gruss

      P.S.: Eine grundlegende Neuauflage der CODATA-Werte des SI-Maßsystems ist für 2018 geplant und wird viele Änderungen bei den Klammerwerten bringen!
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

      Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von p. specht ()

    • Abt. XProfan-Liste mit Relativen Atommassen
      ============================
      für einige wichtige chemische Elemente (Diesmal Reinwerte, getrennt nach häufigen Isotopen). Es handelt sich um Werte, die 2003 mittels hochgenauer Massenspektrometer ermittelt wurden und Grundlage entsprechender Normentabellen (CODATA 2010) sind. Einige aktuellere Messergebnisse, die bis Anfang 2014 bekannt wurden, wurden eingearbeitet. Natürlich ohne jede Gewähr - die Gefahr von Tippfehlern ist relativ groß!
      Gruss

      P.S.: Offiziell zuständig für diese Werte ist die IUPAC (iupac.org/)

      Brainfuck-Quellcode

      1. WindowTitle "Relative Atommassen - Aktuelle Rechenwerte 2015"
      2. ' Q: http://arxiv.org/pdf/1203.5425.pdf
      3. ' OHNE JEDE GEWÄHR (Möglicherweise Tippfehler)!
      4. CLS
      5. declare _N$,m_N!,u_m_N!,u_rel_m_N!
      6. declare _1H$,m_1H!,u_m_1H!,u_rel_m_1H!
      7. declare _2H$,m_2H!,u_m_2H!,u_rel_m_2H!
      8. declare _3H$,m_3H!,u_m_3H!,u_rel_m_3H!
      9. declare _3He$,m_3He!,u_m_3He!,u_rel_m_3He!
      10. declare _4He$,m_4He!,u_m_4He!,u_rel_m_4He!
      11. declare _12C$,m_12C!,u_m_12C!,u_rel_m_12C!
      12. declare _16O$,m_16O!,u_m_16O!,u_rel_m_16O!
      13. declare _28Si$,m_28Si!,u_m_28Si!,u_rel_m_28Si!
      14. declare _29Si$,m_29Si!,u_m_29Si!,u_rel_m_29Si!
      15. declare _30Si$,m_30Si!,u_m_30Si!,u_rel_m_30Si!
      16. declare _36Ar$,m_36Ar!,u_m_36Ar!,u_rel_m_36Ar!
      17. declare _38Ar$,m_38Ar!,u_m_38Ar!,u_rel_m_38Ar!
      18. declare _40Ar$,m_40Ar!,u_m_40Ar!,u_rel_m_40Ar!
      19. declare _87Rb$,m_87Rb!,u_m_87Rb!,u_rel_m_87Rb!
      20. declare _107Ag$,m_107Ag!,u_m_107Ag!,u_rel_m_107Ag!
      21. declare _109Ag$,m_109Ag!,u_m_109Ag!,u_rel_m_109Ag!
      22. declare _133Cs$,m_133Cs!,u_m_133Cs!,u_rel_m_133Cs!
      23. declare _c0$,c0!,SI_c0$
      24. declare _mu0$,mu0!,SI_mu0$
      25. declare _epsilon0$,epsilon0!,SI_epsilon0$
      26. declare _12C_$,m_12C_!,SI_12C$
      27. declare _Mu$,Mu!,SI_Mu$
      28. declare _12C__$,m_12C__!,SI_m12C$
      29. declare _K_J90$,K_J90!,SI_K_J90$
      30. declare _R_K90$,R_K90!,SI_R_K90$
      31. print "...als erste Idee für eine Chemie-Includedatei\n"
      32. ' ---------------------------------------------------------------------
      33. ' Relative Atommassen (Stand 2003 + Verbesserungen bis 2014 eingearbeitet)
      34. ' Bez. Variable Wert Relative_Unsicherheit u_rel
      35. ' ---------------------------------------------------------------------
      36. _N$="Rel. Neutronenmasse":m_N!=1.00866491574:u_m_N!=0.00000000056:u_rel_m_N!=5.6*10^-10
      37. _1H$="Wasserstoff":m_1H!=1.00782503207:u_m_1H!=0.00000000010:u_rel_m_1H!=10^-10
      38. _2H$="Deuterium":m_2H!=2.014101778040:u_m_2H!=0.000000000080:u_rel_m_2H!=4*10^-11
      39. _3H$="Tritium":m_3H!=3.0160492777:u_m_3H!=0.0000000025:u_rel_m_3H!=8.2*10^-10
      40. _3He$="Helium":m_3He!=3.0160293191:u_m_3He!=0.0000000026:u_rel_m_3He!=8.6*10^-10
      41. _4He$="Helium4":m_4He!=4.002603254131:u_m_4He!=0.000000000062:u_rel_m_4He!=1.5*10^-11
      42. _12C$="Kohlenstoff12":m_12C!=12:u_m_12C!=0.0:u_rel_m_12C!=0.0
      43. _16O$="Sauerstoff":m_16O!=15.99491461957:u_m_16O!=0.00000000018:u_rel_m_16O!=1.1*10^-11
      44. _28Si$="Silizium":m_28Si!=27.97692653496:u_m_28Si!=0.00000000062:u_rel_m_28Si!=2.2*10^-11
      45. _29Si$="Silizium29":m_29Si!=28.9764946625:u_m_29Si!=0.0000000020:u_rel_m_29Si!=6.9*10^-11
      46. _30Si$="Silizium30":m_30Si!=29.973770171:u_m_30Si!=0.000000032:u_rel_m_30Si!=1.1*10^-9
      47. _36Ar$="Argon36":m_36Ar!=35.967545105:u_m_36Ar!=0.000000028:u_rel_m_36Ar!=7.8*10^-10
      48. _38Ar$="Argon38":m_38Ar!=37.96273239:u_m_38Ar!=0.00000036:u_rel_m_38Ar!=9.5*10^-9
      49. _40Ar$="Argon40":m_40Ar!=39.9623831225:u_m_40Ar!=0.0000000029:u_rel_m_40Ar!=7.2*10^-11
      50. _87Rb$="Rubidium87":m_87Rb!=86.909180535:u_m_87Rb!=0.000000010:u_rel_m_87Rb!=1.2*10^-10
      51. _107Ag$="Silber":m_107Ag!=106.9050968:u_m_107Ag!=0.0000046:u_rel_m_107Ag!=4.3*10^-8
      52. _109Ag$="Silber109":m_109Ag!=108.9047523:u_m_109Ag!=0.0000031:u_rel_m_109Ag!=2.9*10^-8
      53. _133Cs$="Caesium":m_133Cs!=132.905451963:u_m_133Cs!=0.000000013:u_rel_m_133Cs!=9.8*10^-11
      54. declare _Ag$,m_Ag!
      55. declare _Al$,m_Al!
      56. declare _As$,m_As!
      57. declare _Au$,m_Au!
      58. declare _B$,m_B!
      59. declare _Ba$,m_Ba!
      60. declare _Bi$,m_Bi!
      61. declare _Br$,m_Br!
      62. declare _C$,m_C!
      63. declare _Ca$,m_Ca!
      64. declare _Cd$,m_Cd!
      65. declare _Cl$,m_Cl!
      66. declare _Co$,m_Co!
      67. declare _Cr$,m_Cr!
      68. declare _Cu$,m_Cu!
      69. declare _F$,m_F!
      70. declare _Fe$,m_Fe!
      71. declare _H$,m_H!
      72. declare _Hg$,m_Hg!
      73. declare _J$,m_J!
      74. declare _K$,m_K!
      75. declare _Mg$,m_Mg!
      76. declare _Mn$,m_Mn!
      77. declare _N_$,m_N_! '******
      78. declare _Na$,m_Na!
      79. declare _Ni$,m_Ni!
      80. declare _O$,m_O!
      81. declare _P$,m_P!
      82. declare _Pb$,m_Pb!
      83. declare _Pt$,m_Pt!
      84. declare _S$,m_S!
      85. declare _Sb$,m_Sb!
      86. declare _Se$,m_Se!
      87. declare _Si$,m_Si!
      88. declare _Sn$,m_Sn!
      89. declare _Sr$,m_Sr!
      90. declare _Te$,m_Te!
      91. declare _Ti$,m_Ti!
      92. declare _U$,m_U!
      93. declare _Zn$,m_Zn!
      94. _Ag$="Silber":m_Ag!=107.87
      95. _Al$="Aluminium":m_Al!=26.98
      96. _As$="Arsen":m_As!=74.92
      97. _Au$="Gold":m_Au!=196.97
      98. _B$="Bor":m_B!=10.81
      99. _Ba$="Barium":m_Ba!=137.34
      100. _Bi$="Wismut":m_Bi!=208.98
      101. _Br$="Brom":m_Br!=79.90
      102. _C$="Kohlenstoff":m_C!=12.01
      103. _Ca$="Kalzium":m_Ca!=40.08
      104. _Cd$="Cadmium":m_Cd!=112.40
      105. _Cl$="Chlor":m_Cl!=35.45
      106. _Co$="Kobalt":m_Co!=58.93
      107. _Cr$="Chrom":m_Cr!=52.00
      108. _Cu$="Kupfer":m_Cu!=63.55
      109. _F$="Fluor":m_F!=19.00
      110. _Fe$="Eisen":m_Fe!=55.85
      111. _H$="Wasserstoff":m_H!=1.01
      112. _Hg$="Quecksilber":m_Hg!=200.59
      113. _J$="Jod":m_J!=126.90
      114. _K$="Kalium":m_K!=39.10
      115. _Mg$="Magnesium":m_Mg!=24.31
      116. _Mn$="Mangan":m_Mn!=54.94
      117. _N_$="Stickstoff":m_N_!=14.01
      118. _Na$="Natrium":m_Na!=22.99
      119. _Ni$="Nickel":m_Ni!=58.70
      120. _O$="Sauerstoff":m_O!=16.00
      121. _P$="Phosphor":m_P!=30.97
      122. _Pb$="Blei":m_Pb!=207.2
      123. _Pt$="Platin":m_Pt!=195.09
      124. _S$="Schwefel":m_S!=32.06
      125. _Sb$="Antimon":m_Sb!=121.75
      126. _Se$="Selen":m_Se!=78.96
      127. _Si$="Silizium":m_Si!=28.09
      128. _Sn$="Zinn":m_Sn!=118.69
      129. _Sr$="Strontium":m_Sr!=87.62
      130. _Te$="Tellur":m_Te!=127.60
      131. _Ti$="Titan":m_Ti!=47.90
      132. _U$="Uran":m_U!=238.03
      133. _Zn$="Zink":m_Zn!=65.38
      134. '----------------------------------------------
      135. ' Other important quantities (CODATA 2010)
      136. '----------------------------------------------
      137. _c0$="speed_of_light_in_vacuum":c0!=299792458:SI_c0$="[m/s]"
      138. '_mu0$="magnetic_constant":mu0!=4*pi()*10^-7 :SI_mu0$="[N/A^2]"
      139. _mu0$="Magnetische_Feldkonstante":mu0!=12.566370614*10^-7:SI_mu0$="[N/A^2]"
      140. _epsilon0$="electric_constant":epsilon0!=8.854187817*10^-12:SI_epsilon0$="[F/m]"'=1/(µ0*c0^2)
      141. _12C$="molar_mass_of_12C":m_12C!=12*10^-3:SI_12C$="[kg/mol]"
      142. _Mu$="molar_mass_constant":Mu!=10^-3 :SI_Mu$="[kg/mol]"
      143. _12C_$="relative_atomic_mass_of_12C":m_12C_!=12:SI_m12C$="[u]"
      144. _K_J90$="conventional_value_of_Josephson_constant":K_J90!=483597.9:SI_K_J90$="[GHz/V]"
      145. _R_K90$="conventional_value_of_von_Klitzing_constant":R_K90!=25812.807:SI_R_K90$="[Ohm]"
      146. '-----------------------------------------------------------------------------------------
      147. Print " Hurra! Werte wurden ohne Laufzeitfehler eingelesen."
      148. waitinput
      149. End
      Alles anzeigen
      PPS: Rechtschreibfehler bemerkt: Richtig heißt es 'Disaster' (Katastrophe), nicht Desaster...
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von p. specht ()

    • Abt. Fibonacci-Zahlen
      ==============
      Leonardo Fibonacci beschrieb im Jahr 1202 das Wachstum einer Kaninchenpopulation und fand dazu die heute nach ihm benannte Zahlenfolge der Fibonacci-Zahlen. Geschichtswissenschaftler wiesen allerdings auf die frühe Erwähnung dieser Folge in Sanskrit-Texten um ca. 450 vor Chr. hin.

      Dann wurde entdeckt, daß diese Folge in der gesamten Natur vorkommt: Die Anzahl der Vorfahren männlicher Honigbienen (Drohnen), die Zahl der Schuppen in den einzelnen Schuppenringen einer Ananas, die Samenlamellen der Spiralringe von Fichtenzapfen, Samenstände von Sonnenblumen oder die Blütenblatt-Anzahl bestimmter Blumen (etwa Astern) folgt dieser Reihe - wer also z.B. je das Zupfspiel "XY liebt mich - mit Herzen - mit Schmerzen - garnicht!" gespielt hat: Hier bietet sich eine Berechnungsmöglichkeit für erotische Erfolge - im vorhinein! :-)

      Später erweiterten Mathematiker die Fibonacci-Reihe auch auf den negativen Zahlenbereich, was u.a. zum Zeckendorf-Theorem führte. Dieses besagt, daß jede beliebige ganze Zahl aus Folgen nicht-benachbarter negativ-indexierter Fibonacci-Zahlen zusammengesetzt werden kann. Ein daraus abgeleiteter Binärstellencode kann z.B. keine nebeneinander auftretenden 1-Werte aufweisen, was bei bestimmten Anwendungen eine zuverlässige Fehlererkennung ermöglicht.
      Gruss

      P.S.: Weitere Anwendungen ergaben sich bei der Organisation von Datenbanken in Form der sog. Fibonacci-Bäume. Diese sind heutzutage allerdings eher von theoretischem Wert (Laufzeitanalyse).

      Quellcode

      1. WindowTitle upper$(\
      2. " Allg. Fibonacci-Zahlen: Gültigkeitsbereich verschiedener Formeln (ua.: Moivre-Binet) testen")
      3. '(CL) CopyLeft 2015-08 in XProfan11.2a by P.Specht, Wien (Austria), OHNE JEDWEDE GEWÄHR!
      4. 'Info-Basis: https://de.wikipedia.org/wiki/Fibonacci-Folge
      5. Window 0,0-%maxx,%maxy-50:font 2:Set("decimals",0):declare n&,vz&,sg!
      6. AppendMenubar 100,"N "+"_______ Tab.1 "+"___________________________ Tab.2 "+\
      7. "__________________________________ Fib(%g) "+"____________________________ Fib(#) "+\
      8. "_____________________ fibz_MoivreBinet() "+"_____________ Fehler "+\
      9. "________________________________ N "
      10. var f$="00,0,01,1,02,1,03,2,04,3,05,5,06,8,07,13,08,21,09,34,10,55,11,89,12,144,13,233,"+\
      11. "14,377,15,610,16,987,17,1597,18,2584,19,4181,20,6765,21,10946,22,17711,23,28657,"+\
      12. "24,46368,25,75025,26,121393,27,196418,28,317811,29,514229,30,832040,31,1346269,"+\
      13. "32,2178309,33,3524578,34,5702887,35,9227465,36,14930352,37,24157817,38,39088169,"+\
      14. "39,63245986,40,102334155,41,165580141,42,267914296,43,433494437,44,701408733,"+\
      15. "45,1134903170,46,1836311903,47,2971215073,48,4807526976,49,7778742049,50,12586269025"
      16. var fi$="0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,"+\
      17. "28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,"+\
      18. "14930352,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733,"+\
      19. "1134903170,1836311903,2971215073,4807526976,7778742049,12586269025,20365011074,32951280099,"+\
      20. "53316291173,86267571272,139583862445,225851433717,365435296162,591286729879,956722026041,"+\
      21. "1548008755920,2504730781961,4052739537881,6557470319842,10610209857723,17167680177565,"+\
      22. "27777890035288,44945570212853,72723460248141,117669030460994,190392490709135,308061521170129,"+\
      23. "498454011879264,806515533049393,1304969544928657,2111485077978050,3416454622906707,"+\
      24. "5527939700884757,8944394323791464"
      25. whileloop -80,80
      26. n&=&Loop:sg!=1:vz&=(n&>0)-(n&<0):case vz&=-1:vz&=if(int(0.5*n&)=(0.5*n&),-1,1)
      27. print if(n&<0,""," ");if(abs(n&)<1000," ","");if(abs(n&)<100," ","");if(abs(n&)<10," ","");n&,
      28. print tab(10);if(vz&<0,""," ");format$("%g",vz&*val(substr$(f$,abs(n&)*2+2,","))),
      29. print tab(32);format$("%g",fib(n&)),
      30. print tab(54);format$(" ################0;-################0; 0",vz&*val(substr$(fi$,abs(n&)+1,","))),
      31. print tab(76);format$(" ################0;-################0; 0",fib(n&)),
      32. print tab(98);format$(" ################0;-################0; 0",fibz_MoivreBinet(n&)),
      33. font 0
      34. print tab(120);format$("+################0;-################0; 0",fibz_MoivreBinet(n&)-vz&*val(substr$(fi$,abs(n&)+1,","))),
      35. font 2
      36. print tab(142);if(n&<0,""," ");if(abs(n&)<1000," ","");if(abs(n&)<100," ","");if(abs(n&)<10," ","");n&
      37. if %csrlin>49:print " [Taste]";:waitinput:cls:endif
      38. endwhile
      39. waitinput
      40. END
      41. Proc fib :parameters n&:declare i&,vz!,sg!,f0!,f1!,f2!
      42. sg!=1:vz!=(n&>0)-(n&<0):n&=abs(n&):f0!=1
      43. case vz&=-1:sg!=if(int(0.5*n&)=(0.5*n&),-1,1)
      44. while i&<n&:f2!=f1!+f0!:f0!=f1!:f1!=f2!:inc i&:endwhile
      45. return sg!*f2!
      46. endproc
      47. Proc fibz_MoivreBinet :parameters n&:case n&=0:return 0
      48. var vz!=(n&>0)-(n&<0):n&=abs(n&)
      49. var sg!=1:case vz&=-1:sg!=if(int(0.5*n&)=(0.5*n&),-1,1)
      50. var phi!=(1+sqrt(5))/2:var chi!=phi!-1
      51. return sg!*(phi!^n& + chi!^n&)/sqrt(5)
      52. endproc
      Alles anzeigen
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von p. specht ()

    • Abt. Alternate Data Streams mit X2 listen: Alternate Data Streams und die AMSI
      ======================================================================================

      Quellcode

      1. 'X2 XProfancode von AHT
      2. $H Windows.ph
      3. $H Messages.ph
      4. Declare ADSListe%, Statusbar%, Width&, Height&, KopfZeile$, AMSIScanDLL%
      5. Declare FolderName$, Test%, FileName$
      6. Proc Enable
      7. Parameters EnableIt&
      8. EnableMenu 101, not(EnableIt&)
      9. EnableMenu 103, not(EnableIt&)
      10. EnableMenu 104, not(EnableIt&)
      11. EnableMenu 102, EnableIt&
      12. EndProc
      13. Proc HoleErgebnisse
      14. Parameters Param1%, Param2%, Param3%, Param4&
      15. External("user32", "KillTimer", %HWND, 123321)
      16. Declare ScanlistAdd$
      17. Declare ToRead$, Scan1%, Scan2%, Scan3%, Scan4%, Scan5%, Scan6%, Zeilennummer&
      18. SetText Statusbar%, "Fertig!"
      19. External("amsiscan.dll", "SetScanlistToStart")
      20. ToRead$ = "ProcessName"
      21. Scan1% = External("amsiscan.dll", "GetScanlistEntry", addr(ToRead$))
      22. ToRead$ = "ProcessID"
      23. Scan2% = External("amsiscan.dll", "GetScanlistEntry", addr(ToRead$))
      24. ToRead$ = "Scantarget"
      25. Scan3% = External("amsiscan.dll", "GetScanlistEntry", addr(ToRead$))
      26. ToRead$ = "IsMalware"
      27. Scan4% = External("amsiscan.dll", "GetScanlistEntry", addr(ToRead$))
      28. ToRead$ = "Scannermessage"
      29. Scan5% = External("amsiscan.dll", "GetScanlistEntry", addr(ToRead$))
      30. ToRead$ = "ScannerErrornumber"
      31. Scan6% = External("amsiscan.dll", "GetScanlistEntry", addr(ToRead$))
      32. While (Scan1% > 0) And (Scan2% > 0) And (Scan3% > 0) And (Scan4% > 0) And (Scan5% > 0) And (Scan6% > 0)
      33. ToRead$ = "ProcessName"
      34. Scan1% = External("amsiscan.dll", "GetScanlistEntry", addr(ToRead$))
      35. ToRead$ = "ProcessID"
      36. Scan2% = External("amsiscan.dll", "GetScanlistEntry", addr(ToRead$))
      37. ToRead$ = "Scantarget"
      38. Scan3% = External("amsiscan.dll", "GetScanlistEntry", addr(ToRead$))
      39. ToRead$ = "IsMalware"
      40. Scan4% = External("amsiscan.dll", "GetScanlistEntry", addr(ToRead$))
      41. ToRead$ = "Scannermessage"
      42. Scan5% = External("amsiscan.dll", "GetScanlistEntry", addr(ToRead$))
      43. ToRead$ = "ScannerErrornumber"
      44. Scan6% = External("amsiscan.dll", "GetScanlistEntry", addr(ToRead$))
      45. Zeilennummer& = 0
      46. If (Scan1% > 0) And (Scan2% > 0) And (Scan3% > 0) And (Scan4% > 0) And (Scan5% > 0) And (Scan6% > 0)
      47. ScanlistAdd$ = String$(Scan3%, 0) + "|" + String$(Scan4%, 0) + "|" + String$(Scan5%, 0)
      48. AddString(ADSListe%, ScanlistAdd$)
      49. EndIf
      50. Zeilennummer& = Zeilennummer& + 1
      51. EndWhile
      52. Enable(1)
      53. EndProc
      54. Windowstyle 31 + 512
      55. WindowTitle "ADS Suche"
      56. Window 50, 50 - 640, 440
      57. PopUp "&Programm"
      58. AppendMenu 101, "&suche ADS auf allen Laufwerken"
      59. AppendMenu 103, "suche ADS in enem &Ordner"
      60. AppendMenu 104, "suche ADS in ener &Datei"
      61. Separator
      62. AppendMenu 102, "suche &abbrechen"
      63. Separator
      64. AppendMenu 111, "&beenden"
      65. Enable(1)
      66. Statusbar% = Create("StatusWindow", %HWND, "Im Menü eine Funktion auswählen...")
      67. KopfZeile$ = "ADS Name;0;380;Malware gefunden?;0;130;Scannermeldung;0;330"
      68. ADSListe% = Create("GridBox", %HWND, KopfZeile$, 0, 30, 30, int(abs(Width(%HWND) - 60)), int(abs(Height(%HWND) - 80)))
      69. AMSIScanDLL% = UseDLL("amsiscan.dll")
      70. Usermessages ~WM_CLOSE, ~WM_TIMER
      71. SetTimer 100
      72. While %Umessage <> ~WM_CLOSE
      73. Waitinput
      74. IF %Menuitem = 111
      75. SetMenuitem 0
      76. SendMessage(%HWND, ~WM_CLOSE, 0, 0)
      77. endif
      78. IF %UMESSAGE = ~WM_TIMER
      79. If &UwParam = 123321
      80. HoleErgebnisse(0, 0, 0, 0)
      81. else
      82. If String$(External("amsiscan.dll", "GetScanObject"), 0) <> ""
      83. SetText Statusbar%, "Bitte warten, es wird gesucht... " + String$(External("amsiscan.dll", "GetScanObject"), 0)
      84. endif
      85. endif
      86. endif
      87. IF %Menuitem = 101
      88. SetMenuitem 0
      89. Enable(0)
      90. SetText Statusbar%, "Bitte warten, es wird gesucht..."
      91. ClearList ADSListe%
      92. FolderName$ = ""
      93. External("amsiscan.dll", "AmsiScanAdsInFolder", %HWND, ProcAddr("HoleErgebnisse", 4), addr(FolderName$), 0)
      94. endif
      95. IF %Menuitem = 103
      96. SetMenuitem 0
      97. FolderName$ = ChooseDir$("Bitte einen Ordner zum Scannen nach ADS auswählen:")
      98. If Foldername$ <> ""
      99. Enable(0)
      100. SetText Statusbar%, "Bitte warten, es wird gesucht..."
      101. ClearList ADSListe%
      102. External("amsiscan.dll", "AmsiScanAdsInFolder", %HWND, ProcAddr("HoleErgebnisse", 4), addr(FolderName$), 0)
      103. endif
      104. endif
      105. IF %Menuitem = 104
      106. SetMenuitem 0
      107. FileName$ = LoadFile$("Bitte eine Datei zum Scannen nach ADS auswählen:", "*")
      108. If FileName$ <> ""
      109. Enable(0)
      110. SetText Statusbar%, "Bitte warten, es wird gesucht..."
      111. ClearList ADSListe%
      112. External("amsiscan.dll", "AmsiScanAdsInFile", %HWND, ProcAddr("HoleErgebnisse", 4), addr(FileName$), 0)
      113. endif
      114. endif
      115. IF %Menuitem = 102
      116. SetMenuitem 0
      117. External("amsiscan.dll", "CancleScan", ProcAddr(HoleErgebnisse, 4))
      118. SetText Statusbar%, "Suche wurde abgebrochen!"
      119. Enable(1)
      120. endif
      121. If (Width& <> Width(%HWND)) or (Height& <> Height(%HWND))
      122. Width& = Width(%HWND)
      123. Height& = Height(%HWND)
      124. SetWindowPos Statusbar% = 0, 0 - 0, 0; 0
      125. SetWindowPos ADSListe% = 30, 30 - int(abs(Width(%HWND) - 60)), int(abs(Height(%HWND) - 80)); 0
      126. endif
      127. EndWhile
      128. KillTimer
      Alles anzeigen
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • Als Weiterentwicklung des oben stehenden Codes kann man sich zum Beispiel so etwas bauen - mit Rechtsklick kann man sich da den Inhalt des markierten ADS mit optionalem Programm anzeigen lassen (ich verwende dazu HXD Hex Editor) oder den ADS löschen lassen: Download ShowADS
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von AHT ()

    • Link ist gefixt. Die Messageverarbeitung der Freeware von XProfan ist etwas nervig. ES reagiert zeitweise nicht auf WM_CLOSE und einen Repaint. Mit X2 läuft der Code besser.
      Ich hoffe, es wird klar, was das Proggie soll und tut.

      Fals es nicht klar ist, hier mal ein Screenshot:
      [Blockierte Grafik: http://abload.de/img/testnvk03.jpg]

      Hab übriegens noch ein paar Fehler gefixt.
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von AHT ()

    • Das schaut ja echt gut aus, AHT ! Für Win-10 bestimmt super! Ich hier will allerdings VERHINDERN, daß das blöde Windows-Update mein schönes Win-7 auf Win10 updatet. Bisher habe ich es duch Platte zustopfen geschafft, daß der tägliche Updateversuch scheitert. Für einen Tipp, wie ich das ganze endgültig abstellen kann, wäre ich dankbar. In Win-10 kann man die Update-Funktion angeblich nicht mehr abstellen, und es spioniert nach Installation ohne weitere Maßnahmen den User stark aus...
      Wenn das stimmt, bin ich mit Win-7 bestens bedient und werde Updates künftig generell verbieten.
      Gruss
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Windows-Rechner in Programmen nutzen?
      ==============================
      Anbei ein erster Versuch, den Quad-Precision-Windows-Desktoprechner calc.exe für Berechnungen aus einem Programm heraus zu nutzen. Leider gibt es ja keine offizielle Schnittstelle, sodaß wieder mal Xprofans "Sendstring", "Sendkey" und die Zwischenablage zum Einsatz kommen. Das macht die Sache ziemlich langsam, aber zumindest könnte man eigene Algorithmen mit den hochgenauen Windowsrechner-Ergebnissen vergleichen und damit verifizieren.
      Gruss

      P.S.: Verwendung bitte auf Gefahr des jeweiligen Anwenders, jedwede Haftung ist ausgeschlossen!

      Brainfuck-Quellcode

      1. Cls
      2. ' ANWENDUNG AUF ALLEINIGE GEFAHR DES USERS! KEINE GEWÄHR!
      3. ' Meine Konfiguration: Profan11.2a, Win7-64 und dessen Calc.exe
      4. declare pid&,R$
      5. 'run "calc.exe"
      6. pid&=@WinExec("calc.exe",1)
      7. 'Fenster-Modus (hier 1)
      8. ' 0 - verbirgt und deaktiviert das Fenster (~SW_HIDE)
      9. ' 1 - aktiviert das Fenster und zeigt es in seiner ursprünglichen Größe (~SW_SHOWNORMAL)
      10. ' 2 - aktiviert das Fenster und verkleinert es zum Symbol (~SW_SHOWMINIMIZED)
      11. ' 3 - aktiviert das Fenster und zeigt es größtmöglich an (~SW_SHOWMAXIMIZED)
      12. ' 4 - zeigt das Fenster in seiner normalen Größe, das gegenwärtig aktive Fenster bleibt aktiv (~SW_SHOWNOACTIVE)
      13. ' 5 - aktiviert das Fenster und zeigt es in aktueller Größe (~SW_SHOW)
      14. ' 6 - deaktiviert das Fenster und verkleinert es zum Symbol
      15. ' 7 - verkleinert das Fenster zum Symbol, das gegenwärtig aktive Fenster bleibt aktiv (~SW_SHOWMINNOACTIVE)
      16. ' 8 - Zeigt das Fenster im aktuellen Zustand, das gegenwärtig aktive Fenster bleibt aktiv (~SW_SHOWNA)
      17. ' 9 - gleiche Wirkung wie Modus 1 (~SW_RESTORE)
      18. if pid&=0
      19. print "Exec-Fehler"
      20. beep
      21. waitinput
      22. else
      23. clearclip
      24. print "Process-ID: ",pid&
      25. waitinput 300
      26. @SendString(pid&,"%2")
      27. waitinput 300
      28. @SendString(pid&,"1234{+}1{ENTER}")
      29. waitinput 300
      30. 'Plus + = UMSCHALTTASTE (SHIFT)
      31. 'Caret ^ = STRG-TASTE
      32. 'Prozent % = ALT-TASTE
      33. 'Tilde ~
      34. 'Klammern ( )
      35. '+,^,%-Zeichen selbst: In geschweifte Klammern {+}
      36. 'Geschw.Klammern selbst: {{} und {}}
      37. 'Spezielle Tasten, die keine Zeichen darstellen: {Codetext}:
      38. '@SendString(W%,"Das ist die Eingabe! {ENTER}"
      39. repeat
      40. ' waitinput 40
      41. @SendString(pid&,"^c")
      42. ' waitinput 40
      43. R$=GetClip$()
      44. until R@@@edbc5df4-7053-49e0-b37c-1d8e021c951e@@@
      45. gt;0
      46. @SendString(pid&,"%{F4}")
      47. print R$
      48. endif
      49. waitinput
      50. end
      51. '[]Rechner-Tastenkombinationen (calc.exe von Win7)
      52. ' -------------------------------------------------
      53. ' MODUS
      54. ' ALT+1 Umschalten in den Standardmodus
      55. ' ALT+2 Umschalten in den wissenschaftlichen Modus
      56. ' ALT+3 Umschalten in den Programmierermodus
      57. ' ALT+4 Umschalten in den Statistikmodus
      58. ' STRG+E Öffnen von Datumsberechnungen
      59. ' STRG+H Ein- oder Ausschalten des Berechnungsverlaufs
      60. ' STRG+U Öffnen der Einheitenumrechnung
      61. ' ALT+C Berechnen oder Lösen von Datumsberechnungen und Arbeitsblättern
      62. ' F1 Öffnen der Rechner-Hilfe
      63. ' EINGABEN UND MEMO
      64. ' STRG+Q Verwenden der Schaltfläche Memo=Memo-Wert: M-
      65. ' STRG+P Verwenden der Schaltfläche Memo=Memo+Wert:M+
      66. ' STRG+M Verwenden der Schaltfläche Memo-Store: MS
      67. ' STRG+R Verwenden der Schaltfläche Memo-Recall: MR
      68. ' STRG+L Verwenden der Schaltfläche Memo-Clear: MC
      69. ' % Verwenden der Schaltfläche %
      70. ' F9 Verwenden der Schaltfläche Vorzeichenwechsel: +/-
      71. ' / Verwenden der Schaltfläche /
      72. ' * Verwenden der Schaltfläche *
      73. ' + Verwenden der Schaltfläche +
      74. ' - Verwenden der Schaltfläche -
      75. ' R Verwenden der Schaltfläche 1/x
      76. ' @ Verwenden der Wurzelschaltfläche
      77. ' 0-9 Verwenden der Zahlenschaltflächen (0-9)
      78. ' = Verwenden der Schaltfläche {Enter}: =
      79. ' . Verwenden der Schaltfläche , (Dezimaltrennzeichen, Komma)
      80. ' RÜCKTASTE Verwenden der Schaltfläche {Lösche letzten Tastendruck}
      81. ' ESC Verwenden der Schaltfläche CLEAR: C
      82. ' ENTF Verwenden der Schaltfläche CANCELERROR: CE
      83. ' BERECHNUNGSVERLAUF
      84. ' STRG+UMSCHALT+D Löschen des Berechnungsverlaufs
      85. ' F2 Bearbeiten des Berechnungsverlaufs
      86. ' NACH-OBEN-TASTE Navigation nach oben im Berechungsverlauf
      87. ' NACH-UNTEN-TASTE Navigation nach unten im Berechungsverlauf
      88. ' ESC Abbrechen der Bearbeitung des Berechnungsverlaufs
      89. ' EINGABETASTE Neuberechnen des Berechnungsverlaufs nach der Bearbeitung
      90. ' WISSENSCHAFTLICH
      91. ' F3 Auswählen von Deg im wissenschaftlichen Modus
      92. ' F4 Auswählen von Rad im wissenschaftlichen Modus
      93. ' F5 Auswählen von Grad im wissenschaftlichen Modus
      94. ' I Verwenden der Schaltfläche Inv im wissenschaftlichen Modus
      95. ' D Verwenden der Schaltfläche Mod im wissenschaftlichen Modus
      96. ' STRG+S Verwenden der Schaltfläche sinh im wissenschaftlichen Modus
      97. ' STRG+O Verwenden der Schaltfläche cosh im wissenschaftlichen Modus
      98. ' STRG+T Verwenden der Schaltfläche tanh im wissenschaftlichen Modus
      99. ' ( Verwenden der Schaltfläche ( im wissenschaftlichen Modus
      100. ' ) Verwenden der Schaltfläche ) im wissenschaftlichen Modus
      101. ' N Verwenden der Schaltfläche Log-n: ln im wissenschaftlichen Modus
      102. ' ; Verwenden der Schaltfläche Ganzteil: Int im wissenschaftlichen Modus
      103. ' S Verwenden der Schaltfläche sin im wissenschaftlichen Modus
      104. ' O Verwenden der Schaltfläche cos im wissenschaftlichen Modus
      105. ' T Verwenden der Schaltfläche tan im wissenschaftlichen Modus
      106. ' M Verwenden der Schaltfläche dms im wissenschaftlichen Modus
      107. ' P Verwenden der Pi-Schaltfläche im wissenschaftlichen Modus
      108. ' V Verwenden der Schaltfläche F-E im wissenschaftlichen Modus
      109. ' X Verwenden der Schaltfläche Exp im wissenschaftlichen Modus
      110. ' Q Verwenden der Schaltfläche x^2 im wissenschaftlichen Modus
      111. ' Y Verwenden der Schaltfläche x^y im wissenschaftlichen Modus
      112. ' # Verwenden der Schaltfläche x^3 im wissenschaftlichen Modus
      113. ' L Verwenden der Schaltfläche Log10: log im wissenschaftlichen Modus
      114. ' ! Verwenden der Schaltfläche Faktorielle: n! im wissenschaftlichen Modus
      115. ' STRG+Y Verwenden der Schaltfläche y.Wurzel_x im wissenschaftlichen Modus
      116. ' STRG+B Verwenden der Schaltfläche 3.Wurzel_x im wissenschaftlichen Modus
      117. ' STRG+G Verwenden der Schaltfläche 10^x im wissenschaftlichen Modus
      118. ' A-F Verwenden der Schaltflächen A-F im wissenschaftlichen Modus
      119. ' PROGRAMMIEREN
      120. ' F5 Auswählen von Hex im Programmierermodus
      121. ' F6 Auswählen von Dez im Programmierermodus
      122. ' F7 Auswählen von Okt im Programmierermodus
      123. ' F8 Auswählen von Bin im Programmierermodus
      124. ' F12 Auswählen von Qword im Programmierermodus
      125. ' F2 Auswählen von Dword im Programmierermodus
      126. ' F3 Auswählen von Word im Programmierermodus
      127. ' F4 Auswählen von Byte im Programmierermodus
      128. ' K Verwenden der Schaltfläche RoR im Programmierermodus
      129. ' J Verwenden der Schaltfläche RoL im Programmierermodus
      130. ' < Verwenden der Schaltfläche Lsh im Programmierermodus
      131. ' > Verwenden der Schaltfläche Rsh im Programmierermodus
      132. ' % Verwenden der Schaltfläche Mod im Programmierermodus
      133. ' ( Verwenden der Schaltfläche ( im Programmierermodus
      134. ' ) Verwenden der Schaltfläche ) im Programmierermodus
      135. ' | Verwenden der Schaltfläche Or im Programmierermodus
      136. ' ^ Verwenden der Schaltfläche Xor im Programmierermodus
      137. ' ~ Verwenden der Schaltfläche Not im Programmierermodus
      138. ' & Verwenden der Schaltfläche And im Programmierermodus
      139. ' A-F Verwenden der Schaltflächen A-F im wissenschaftlichen Modus
      140. ' LEERTASTE Umschalten des Bitwerts im Programmierermodus
      141. ' STATISTIK
      142. ' A Verwenden der Mittelwertschaltfläche im Statistikmodus
      143. ' STRG+A Verwenden der Schaltfläche für den Mittelwert der Quadrate im Statistikmodus
      144. ' S Verwenden der Summenschaltfläche im Statistikmodus
      145. ' STRG+S Verwenden der Schaltfläche für die Summe der Quadrate im Statistikmodus
      146. ' T Verwenden der Schaltfläche s n-1 im Statistikmodus
      147. ' STRG+T Verwenden der Schaltfläche s n im Statistikmodus
      148. ' D Verwenden der Schaltfläche CAD im Statistikmodus
      Alles anzeigen
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von p. specht ()