Umstellung VB6 auf 2005

Hallo Reinhard,

mal für’n Außenstehenden, warum lohnt sich der Aufwand?
Du lernst jetzt über Monate hinweg .Net.
Kannst du danach mit .Net „mehr“ machen als mit Vb6 ?

Das ist eine gute Frage. Ich koennte dich nun auch fragen oder jeden anderen, warum programmierst du unter Vb6 und nicht unter VB3?
In .NET ist vieles einfacher gehalten und man kann mit weniger Source entsprechend mehr erreichen! Auch sind die erstellten Programme Ressourcen freundlicher als unter VB6. in .NET kannst du „RICHTIG“ mit Objecten arbeiten. Wenn du das mal mit den Objecten von VB6 veergleichst, dann weisst du was ich meine :smile: VB6 kann in Sachen Objecten mit .NET def. nicht mehr mithalten!

Auch greift .NET auf das Framework zu, was VB6 nicht macht. Dort ist man immer auf die Dynamic Links Library angewiesen :s
Auch hast du die Möglichkeit unter .NET Plattform unabhaengige Programme zu schreiben!

Es gibt soviele Gruende, warum sich der Umstieg lohnt Reinhard :smile:

VB und .Net sind doch Hochsprachen, d.h. wie auch immer sie
kompiliert werden, sie greifen auf die Tiefsprache Assembler
zurück, letzlich auf Bitfolgen die der Befehlsinterpreter
kapiert.

Richtig, und genau da gibt es einen weiteren ganz grossen Unterschied.
In .NET wird der geschriebene Source erst in die IL ( Intermediate Language) uebersetzt und dann über den JITTER übersetzt.
Deswegen dauert auch die Installation vom Framework solange :s

Dazu habe ich , ich glaube im 3 letzten Posting, Rainer mal etwas dazu geschrieben. Und um ehrlich zu sein, bin ich zu Faul das nun noch alles einmal zu schreiben :s Am besten ist, wenn du dir mal den Ganzen Thread durchliesst :smile:

Und der Befehlsinterpreter ist Geräteabhängig.

In .NET geschriebene Programme, greifen auf Klassen zu. Diese Klassen sind im Framework enthalten und bei der Installation vom Framework, werden die Daten nur in der IL ausgeliefert. Der JITTER compiliert dann diese Files vor Ort. Er optimiert den Source dann aber so, das er auf deine CPU abgestimmt ist ( sei es ein Pentium, AMD etc. )( ok er hat noch mehr feinheiten, aber diese stehen aussen erst einmal vor :smile: )
Ergo laufen dann unter .NET geschriebene Programme schneller als, welche die unter Vb6 geschrieben wurden :smile:

Warum also .Net anstatt Vb6?

Es kann m.E. nur dadrum gehen, daß man in .Net die gleichen
Sachen die man auch in Vb6 machen könnte, macht, nur diese
einfacherer betitelt/schreibt.

Unter anderem Reinhard :smile:

Ich hoffe, ich konnte mein Unverständnis verständlich
rüberbringen :smile:

Jups, so einigermassen :smile:

Gruß
Reinhard

MfG Alex

Dazu habe ich , ich glaube im 3 letzten Posting, Rainer mal
etwas dazu geschrieben. Und um ehrlich zu sein, bin ich zu
Faul das nun noch alles einmal zu schreiben :s Am besten ist,
wenn du dir mal den Ganzen Thread durchliesst :smile:

Hallo Alex,
das habe ich ja, grad deshalb frage ich ja nach weil ich von den Insidergesprächen über Klassen und sonstige unverständliche Dinge nichts verstanden habe :smile:
Jetzt kommst du z.B. mit „JITTER“, super, noch nie gehört.

Aber ich sehe es mit Wohlwollen daß du und evtl. Rainer auch sich dieses .Net Zeugs reinzieht, vielleicht könnt ihr ja dann hier den chat auslesen bzw was reinschreiben *lächel*

Gruß
Reinhard

Hallo Reinhard,

das habe ich ja, grad deshalb frage ich ja nach weil ich von
den Insidergesprächen über Klassen und sonstige
unverständliche Dinge nichts verstanden habe :smile:
Jetzt kommst du z.B. mit „JITTER“, super, noch nie gehört.

Oha, nungut dann werde ich mal versuchen dir das zu erklaeren :smile:

In meinen ganzen Posting schreibe ich mal zu VB6 = VB und VB9 (.Net) schreibe ich .NET

Also was Klassen sind, das weisst du ja?

Klassen haben Eigenschaften , Methoden und koennen Ereignisse auslösen.

Du koenntest zum Bsp. eine Klasse schreiben, was dir den Batterie Status zurueckliefert oder dich informiert wenn er einen Grenzwert XYZ erreicht. Oder auch was dir die Bildschirmauflösung liefert etc.

Soweit alles klar ? Ich denke mal schon :wink:

So nun hast du unter VB und .NET diverse Befehle. Diese führen stur etwas aus! Um jedoch gewisse Informationen zu erhalten, so reichen die Befehle nicht mehr aus! Nehmen wir mal als Bsp. Die Bildschirmauflösung zu ermitteln. Was macht man da also nun?

Unter VB / VBA nimmt man sich eine API, declariert sie und ruft sie auf.
Die API steht in einer Dynamic Link Library (*.Dll) Diese musst du natuerlich dem Anwender mit ausliefern!

Unter .NET --> Du nimmst eine Klasse und rufst sie nur auf!
Um ein .NET Programm auszufuehren, muss das Framework installiert sein. Diese Framework beinhaltet glaube sowas um die 8000 Klassen!
Das bedeutet wiederrum, das du eigentlich keine API’s mehr brauchst.
Desweiteren reicht es dann im Normalfall aus, wenn du nur das EXE File auslieferst (sofern du keine externen Dateien mit einbeziehst).

Um zu wissen welche Info, in welcher Klasse steht, ist sie nochmal geglieder in den namenspace und die Assembly. So behaelt man den Überblick und in der Hilfe bekommt man schnell einen Hinweis darauf was wo steht :smile:

Soweit ist nun hoffentlich in grossen Zuegen die Sache mit den Klassen klar ?

Nun einmal zu den ganzen Sachen Jitter etc.

Ich hatte dir gesagt das das Framework aus ca. 8000 Klassen besteht. Hm, das ist nicht ganz richtig. Gehen wir einmal darauf genauer ein.

FCL -\> Windows Forms, ASP.NET , Data und XML
CLR -\> BCL, Microsoft Executing Engine,Garbage Collector,JITTER

Wie du nun siehst, sind wieder viele Begriffe dazu gekommen :s

Aber nungut, gehen wir mal ein nach dem anderen durch :wink:

Assembly : Ist die Dll oder das EXE File, welches den Source in der IL vorliegen hat

Namespace:
Ist eine Namentlich Gliederung der Assemblys

CLR: ( Common Language Runtime)
besteht aus der Basis Assembly, diese wird BCL genannt
die BCL ist aber nur ein Teil der CLR, denn sie stellt die Jitter Funktionalitaet zur Verfügung, die dafür sorgt das der Code der Assemblys die in der IL vorliegt kurz vor der Ausführung den nativen Code erstellt, den die CPU verarbeiten kann.
Die BCL beinhaltet auch die interne Muellabfuhr ( Garbage Collector) der nicht verwendet Variablen / Objecte aus dem Speicher entfernt.
Das bedeutet das du dich nicht mehr um die ressourcen kuemmern musst, denn wenn sie nicht mehr gebraucht werden, so entfernt der „Muellmann“ die Daten aus dem Speicher :smile:
Dann ist in der BCL noch die Microsoft Executing Engine, die dafür sorgt das die programme ueberhaupt ausgeführt werden können!

FCL:frowning:Framework Class Library), BCl ( Base Class Library)

Die BCL ist Teil der CLR und sie enthaelt alle Basisobjecte die man benötigt. Sie definiert zum Bsp. die primitiven Datentypen und implementiert die CTS.
Die BCL ist groesstenteils plattformunabhaengig. Sie ist standardisiert und basiert auf der durch die ECMA zertifizierten CLI!
Lauffaehige Implementierungen der CLI gibt es derzeit auf Windows, MacOs.FreeBs
Auf Deutsch heisst das alles:
Das BCL ist das CLI Pendant unter Windows und damit Teil der CLR
Das FCL fasst alle .NET Funktionsbereiche unter einen Namen zusammen

CTS: (Common Type System)
Richtlinie für die Implementierung von Datentypen unter der CLI
Die BCL der CLR setzt das CTS unter Beachtung der CLI um!

MS- IML, kurz IL (Intermediate Language) und JITTER
Der Compiler uebersetzt den Source nicht direkt in MaschinenCode den die CPU versteht. Vielmehr übersetzt er ihn in eine Art Zwischensprache. Die sogenannte IL
Eine Assembly enthaelt ergo auch keinen direkten Source den die CPU versteht, sondern den IL den der JITTER ( Just in Time Compiler)erst zur Laufzeit in MaschinenCode übersetzt!
Der JITTER selbst ist aber so optimiert, das er nur die benötigten Methoden etc. compiliert die gerade benötigt werden!
Das hört sich nun nach Performance Verlusten an! Ist es aber nicht! Sichre der JITTER braucht ein wenig zeit zu compilieren. Er hat aber den Vorteil das er sehr effizienteren Code generien kann, als handelsübliche Compiler ( wie unter VB6) da er die Maschiene kennt, worauf er läuft!

Hierbei sei aber noch eines erwaehnt! Die FCL liegt nicht in der IL vor! Sie ist fertig compiliert und muss nicht gejittet werden! Nun kann man sagen, ha -> Perfomance Verlust!

NEIN! Denn bei der Installation des Frameworks , wir ja der Source in der IL ausgeliefert wie ich bereits erwaehnt. Und das FCL wird dann compiliert und ist somit fertig compiliert und optimal abgestimmt :smile:
Deswegen brauch die Installation des Frameworks auch eine erhebliche Weile :frowning:

Anbei faellt mir noch etwas ein :smile:
Wenn ich das Program mit dem Zieltyp Any erstelle, so läuft es auch Prozessor unabhaengig. Egal ob nun ein 32 Bit oder 64 Bit OS vorliegt. Dabei kommt dann das Prog in den genuss von den 64 Bit, wenn denn ein 64 Bit OS vorliegt :smile:

Aber ich sehe es mit Wohlwollen daß du und evtl. Rainer auch
sich dieses .Net Zeugs reinzieht, vielleicht könnt ihr ja dann
hier den chat auslesen bzw was reinschreiben *lächel*

Ich mag ihn nicht dort reinziehen wollen Reinhard. Ich selbst habe für mich entschieden, das ich nun umsteige. Da unter anderem alle neueren Versionen auf VB9 ( was im Visual Studio 2008 (.NET)) enthalten ist :smile:
Es kam, halt zur Diskussion ob es sich lohnt oder nicht und nunja, da sind wir halt von den einen in das andere gekommen *zwinker*
Was Rainer letztendlich macht, muss er selbst wissen :smile:

Ich hoffe, ich konnte Dir ein paar Fremdbegriffe naeher bringen und du weisst nun, wie das Framework funktioniert und ergo auch die programme und das ein .NET Proggi nicht gleich ein VB6 Proggi ist :smile:

Gruß
Reinhard

MfG Alex

Hallo Alex,

Oha, nungut dann werde ich mal versuchen dir das zu erklaeren

)

Abwink, mir was zu erklären schafft keiner :smile:)

In meinen ganzen Posting schreibe ich mal zu VB6 = VB und VB9
(.Net) schreibe ich .NET

Also ist VB9 nicht wie bei VB5 zu VB6 eine neuere Version mit mehr Features sondern was völlig anderes in der Struktur.

Also was Klassen sind, das weisst du ja?

Klassen haben Eigenschaften , Methoden und koennen Ereignisse
auslösen.

Ja, von VBA (Excel) her.

Du koenntest zum Bsp. eine Klasse schreiben, was dir den
Batterie Status zurueckliefert oder dich informiert wenn er
einen Grenzwert XYZ erreicht. Oder auch was dir die
Bildschirmauflösung liefert etc.

Soweit alles klar ? Ich denke mal schon :wink:

Ja.

So nun hast du unter VB und .NET diverse Befehle. Diese führen
stur etwas aus! Um jedoch gewisse Informationen zu erhalten,
so reichen die Befehle nicht mehr aus! Nehmen wir mal als Bsp.
Die Bildschirmauflösung zu ermitteln. Was macht man da also
nun?

Unter VB / VBA nimmt man sich eine API, declariert sie und
ruft sie auf.
Die API steht in einer Dynamic Link Library (*.Dll) Diese
musst du natuerlich dem Anwender mit ausliefern!

Wie das in VB6 geht weiß ich nicht, in Excel sind die DLLs dabei.

Unter .NET --> Du nimmst eine Klasse und rufst sie nur auf!
Um ein .NET Programm auszufuehren, muss das Framework
installiert sein. Diese Framework beinhaltet glaube sowas um
die 8000 Klassen!
Das bedeutet wiederrum, das du eigentlich keine API’s mehr
brauchst.
Desweiteren reicht es dann im Normalfall aus, wenn du nur das
EXE File auslieferst (sofern du keine externen Dateien mit
einbeziehst).

Ich deute das jetzt so, bei VB6, Vba müssen die dlls auf dem Rechner installiert sein, bei .NET dieses Framework.
Da sehe ich noch keine Verbesserung bzw. Vorteil für .NET.

Um zu wissen welche Info, in welcher Klasse steht, ist sie
nochmal geglieder in den namenspace und die Assembly. So
behaelt man den Überblick und in der Hilfe bekommt man schnell
einen Hinweis darauf was wo steht :smile:
Soweit ist nun hoffentlich in grossen Zuegen die Sache mit den
Klassen klar ?

Ich deute das so, in Frameworks kann ich leicht ermitteln welche Klassen es da gibt und die Inhalte ermitteln.
Nur, wenn ich die Bildschirmauflösung ermitteln will, bei API MUß ich wissen daß das mit GetWindowSolution (*gg* erfunden) geht,
in Framework auch, also wie kriege ich raus welche Frameworkklasse ich benutzen muß um die Bildschirmauflösung zu bekommen?

Nun einmal zu den ganzen Sachen Jitter etc.
Ich hatte dir gesagt das das Framework aus ca. 8000 Klassen
besteht. Hm, das ist nicht ganz richtig. Gehen wir einmal
darauf genauer ein.

FCL -> Windows Forms, ASP.NET , Data und XML
CLR -> BCL, Microsoft Executing Engine,Garbage
Collector,JITTER

Wie du nun siehst, sind wieder viele Begriffe dazu gekommen :s

Jaaaaaaaaaa :frowning: :smile:)))

Aber nungut, gehen wir mal ein nach dem anderen durch :wink:

Das ist ein guter Anfang, könnte aber sehr lang dauern *gg*

Assembly : Ist die Dll oder das EXE File, welches den Source
in der IL vorliegen hat

Namespace:
Ist eine Namentlich Gliederung der Assemblys

CLR: ( Common Language Runtime)
besteht aus der Basis Assembly, diese wird BCL genannt
die BCL ist aber nur ein Teil der CLR, denn sie stellt die
Jitter Funktionalitaet zur Verfügung, die dafür sorgt das der
Code der Assemblys die in der IL vorliegt kurz vor der
Ausführung den nativen Code erstellt, den die CPU verarbeiten
kann.
Die BCL beinhaltet auch die interne Muellabfuhr ( Garbage
Collector) der nicht verwendet Variablen / Objecte aus dem
Speicher entfernt.
Das bedeutet das du dich nicht mehr um die ressourcen kuemmern
musst, denn wenn sie nicht mehr gebraucht werden, so entfernt
der „Muellmann“ die Daten aus dem Speicher :smile:
Dann ist in der BCL noch die Microsoft Executing Engine, die
dafür sorgt das die programme ueberhaupt ausgeführt werden
können!

FCL:frowning:Framework Class Library), BCl ( Base Class Library)

Die BCL ist Teil der CLR und sie enthaelt alle Basisobjecte
die man benötigt. Sie definiert zum Bsp. die primitiven
Datentypen und implementiert die CTS.
Die BCL ist groesstenteils plattformunabhaengig. Sie ist
standardisiert und basiert auf der durch die ECMA
zertifizierten CLI!
Lauffaehige Implementierungen der CLI gibt es derzeit auf
Windows, MacOs.FreeBs
Auf Deutsch heisst das alles:
Das BCL ist das CLI Pendant unter Windows und damit Teil der
CLR
Das FCL fasst alle .NET Funktionsbereiche unter einen Namen
zusammen

CTS: (Common Type System)
Richtlinie für die Implementierung von Datentypen unter der
CLI
Die BCL der CLR setzt das CTS unter Beachtung der CLI um!

MS- IML, kurz IL (Intermediate Language) und JITTER
Der Compiler uebersetzt den Source nicht direkt in
MaschinenCode den die CPU versteht. Vielmehr übersetzt er ihn
in eine Art Zwischensprache. Die sogenannte IL
Eine Assembly enthaelt ergo auch keinen direkten Source den
die CPU versteht, sondern den IL den der JITTER ( Just in
Time Compiler)erst zur Laufzeit in MaschinenCode übersetzt!
Der JITTER selbst ist aber so optimiert, das er nur die
benötigten Methoden etc. compiliert die gerade benötigt
werden!
Das hört sich nun nach Performance Verlusten an! Ist es aber
nicht! Sichre der JITTER braucht ein wenig zeit zu
compilieren. Er hat aber den Vorteil das er sehr effizienteren
Code generien kann, als handelsübliche Compiler ( wie unter
VB6) da er die Maschiene kennt, worauf er läuft!

Hierbei sei aber noch eines erwaehnt! Die FCL liegt nicht in
der IL vor! Sie ist fertig compiliert und muss nicht gejittet
werden! Nun kann man sagen, ha -> Perfomance Verlust!

NEIN! Denn bei der Installation des Frameworks , wir ja der
Source in der IL ausgeliefert wie ich bereits erwaehnt. Und
das FCL wird dann compiliert und ist somit fertig compiliert
und optimal abgestimmt :smile:
Deswegen brauch die Installation des Frameworks auch eine
erhebliche Weile :frowning:

Bis ich das alles kapiert habe brauche ich länger als die Installation.

Anbei faellt mir noch etwas ein :smile:
Wenn ich das Program mit dem Zieltyp Any erstelle, so läuft es
auch Prozessor unabhaengig. Egal ob nun ein 32 Bit oder 64 Bit
OS vorliegt. Dabei kommt dann das Prog in den genuss von den
64 Bit, wenn denn ein 64 Bit OS vorliegt :smile:

Das klingt gut, aber wenn man nur 32Bit Operationen hat, was habe ich da von 64Bit?

Aber ich sehe es mit Wohlwollen daß du und evtl. Rainer auch
sich dieses .Net Zeugs reinzieht, vielleicht könnt ihr ja dann
hier den chat auslesen bzw was reinschreiben *lächel*

Ich mag ihn nicht dort reinziehen wollen Reinhard. Ich selbst
habe für mich entschieden, das ich nun umsteige. Da unter
anderem alle neueren Versionen auf VB9 ( was im Visual Studio
2008 (.NET)) enthalten ist :smile:
Es kam, halt zur Diskussion ob es sich lohnt oder nicht und
nunja, da sind wir halt von den einen in das andere gekommen
*zwinker*
Was Rainer letztendlich macht, muss er selbst wissen :smile:

Ich drücke euch beiden die Daumen, die Programmiersrache zu finden die für euch am Besten ist.

Und wenn in diesem Framework 8000 Klassen sind, da müssen doch ein paar Klassen sein um zum Bleistift hier den CommunityChat permanent auszulesen und auch da mal was reinzuschreiben *lächel*
Anscheinend fehlen da bei VB6 paar APIs die das können:frowning:

Ich hoffe, ich konnte Dir ein paar Fremdbegriffe naeher
bringen und du weisst nun, wie das Framework funktioniert und
ergo auch die programme und das ein .NET Proggi nicht gleich
ein VB6 Proggi ist :smile:

Du hast es super versucht, aber auf verdörrtem Boden wächst selten ein Baum der Erkenntnis, ich sehs jetzt so, bei .NET muß man, vielleicht in der Exe versteckt, das framework mitausliefern.
Bei VB6 halt die DLLs, auch da zur Not in der Exe versteckt.
Und wenn in beiden Fällen das Verstecken nicht geht, dann halt das Framework extra mitschicken, bzw. die DLLs.
Wo ist da der Unterschied?

Und, eine vielleicht blöde Frage,
im uraltBasic gabs die Anweisung Circle(50,60,100).
Dadurch wurde um die Bildschirmkoordinaten x=50, y=60 ein Kreis mit dem Radiaus 100 gezeichnet.
Durch den Start des Basicprogramms wurde es interpretiert, also in Assemblercode umgesetzt, der dann ausgeführt wird.
Wenn ich nun in VB6 oder .NET auch sage, zeichne mir einen Kreis, dann wird das doch in den gleichen Assemblercode umgestezt, also ist doch dann .NET, VB6, uraltBasic gleich schnell.
Lassen wir mal Interpreter und Kompiler weg *gg*

Ich hoffe ich habe dir mein Unverständnis verständlich sagen können:smile:
Gruß
Reinhard

Hallo Reinhard,

Abwink, mir was zu erklären schafft keiner :smile:)

Abwarten, man sollte die Hoffnung nie aufgeben :smile:

Also ist VB9 nicht wie bei VB5 zu VB6 eine neuere Version mit
mehr Features sondern was völlig anderes in der Struktur.

Es gab die Versionen bis zur 6. Sie waren vom Syntax her gleich.
Danach kam das Visual Studio. Ergo .NET , das gibt es ja was weiss ich in der 2005 Version und ich hab die 2008 Version. Das VB dort nennt sich VB9! VB5 zu VB6 ist wie Visual Studio 2005 zu Visual Studio 2008.
Es hat sich nur der Syntax erweitert. Vieles wurde einem abgenommen und es kam ein neues Framework heraus :wink:

Ja, von VBA (Excel) her.

Fein :smile:

Wie das in VB6 geht weiß ich nicht, in Excel sind die DLLs
dabei.

Siehst und du hast unter VB 6 einmal die Runtimes. Diese beinhalten auch DLL’s. Dann gibt es noch welche die eh auf dem System vorliegen!
Dann gibt es aber wiederrum spezielle die kein Bestandteil von Windows sind. Wenn man diese nun in sein Proggi einbindet, so musst du sie mit ausliefern! Sie muss dann auch auf dem entsprechenden Rechner Registriert werden :wink: Aber das macht meistens das Setup!

Ich deute das jetzt so, bei VB6, Vba müssen die dlls auf dem
Rechner installiert sein, bei .NET dieses Framework.
Da sehe ich noch keine Verbesserung bzw. Vorteil für .NET.

Richtig! Versuchst du eine Anwendung die unter .NET erstellt wurde zu installieren und hast das Framework nicht drauf, so wird gleich gemeckert und du kannst es nicht installieren. Ich glaube du bekommst da sogar gleich einen Link angezeigt, wo du dir das Framework runterladen und installieren kannst. Oder das Setup macht das gleich mit *gruebel* Muesste ich eigentlich mal nachschauen :smile:
Eine deutliche Verbesserung ist schon. Bsp. es ist eine Anwendung schon vorhanden. Diese soll erweitert werden um eine Function X. Nehmen wir mal an. Bei einem Fehler soll eine Mail gesendet werden.
Was macht man. Unter VB tippelt und tippelt man und greift wiederrum auf vielleiht andere DLL’s zu. Ergo muss man für die Aenderung, wieder ein komplettes Setup ausliefern :frowning: da die DLL’s ja registriert werden muessen und man vom Anwender net verlangen kann, das er das selbst macht :smile: Unter .NET -> 3 Zeilen Source und volla fertig :smile: Die benötigten Klassen sind im Framework enthalten und muessen nicht nocheinmal mit ausgeliefert werden! Es reicht als , einfach das reine EXE File weiterzureichen :smile:

Auch ein enormer Unterschied ist die Ausführungsgeschwindigkeit. Aber darueber habe ich dir vorhergehenden Posting schon etwas geschrieben :smile:

Ich deute das so, in Frameworks kann ich leicht ermitteln
welche Klassen es da gibt und die Inhalte ermitteln.
Nur, wenn ich die Bildschirmauflösung ermitteln will, bei API
MUß ich wissen daß das mit GetWindowSolution (*gg* erfunden)
geht,
in Framework auch, also wie kriege ich raus welche
Frameworkklasse ich benutzen muß um die Bildschirmauflösung zu
bekommen?

Auch da gibt es wieder viele Wege :s
Nur mal um einen zu nennen :smile:

Ein simples Bsp. Wir nehmen mal wieder den Batterystatus
Wie geht man am duemmsten vor?
Man nehme den Objectbrowser und gebe als Suchbegriff „Battery“ ein

In den vielen Ergebnissen sehe ich nun

System.Windows.Forms.PowerStatus.BatteryChargeStatus() As System.Windows.Forms.BatteryChargeStatus

dabei achten wir auf "BatteryChargeStatus() , volla das ist doch genau die Information die wir brauchen :smile: Also klicken wir das nun an!

Wir sehen dann die Definition!

Public ReadOnly Property BatteryChargeStatus() As System.Windows.Forms.BatteryChargeStatus
 Member of System.Windows.Forms.PowerStatus

Summary:
Gets the current battery charge status.

Return Values:
One of the System.Windows.Forms.BatteryChargeStatus values indicating the current battery charge level or charging status.

Wie wir nun sehen, ist der Namespace System.Windows.Form und der Member Powerstatus!

Eine Eingabe, alla system.Windows.Forms.Powerstatus bemaengelt .NET natuerlich, weil er den Member nicht kennt :confused:

Also gehen wir zurueck zu .NET und geben mal Powerstatus ein und druecken F1 ( die Hilfe)

Dort finden wir dann gleich als erstes, folgenden Eintrag

PowerStatus Class (System.Windows.Forms) 
Indicates current system power status information. ... The PowerStatus class represents information about the current AC line power status, battery charging status, and battery ... 

Ha, genau da suchen wir ja. Also klicken wir dieses an :smile:
Wir bekommen nun die Klasse Powerstatus angezeigt :smile:
Das alles interessiert uns ja erstmal nicht :wink:
Wir scrollen mal ganz runter zu den referencen
Dort finden wir folgendes

 Version Information 
.NET Framework
Supported in: 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

 See Also 
Reference
PowerStatus Members
System.Windows.Forms Namespace
PowerStatus
SystemInformation
PowerLineStatus
BatteryChargeStatus
PowerState

Wie unschwer zu erkennen ist, bedarf es dem Framework 3.5 etc.
Auch sehen wir da nun eine weitere wichtige Info.
„SystemInformation“ und genau das ist das Stichwort!
Wir klicken das mal an :wink:

Provides information about the current system environment.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in System.Windows.Forms.dll)

Syntax:

Visual Basic (Declaration)
Public Class SystemInformation

Visual Basic (Usage)
Dim instance As SystemInformation

Nun haben wir eigentlich Daten die wir brauchen :smile:
Also machen uns ans Werk!
Wir importieren die System.Windows.Forms
uns steht Systeminformation zur Verfuegung und dann ergo auch der Member PowerStatus und deren Eigenschaften.

imports System.Windows.Forms

systeminformation.Powerstatus.DieGewuenschteEigenschaft 

oder halt

System.Windows.Forms.Systeminformation.Powerstatus.Eigenschaft

das alles hört sich alles ein wenig verzwickt an, ist aber eigentlich nicht. Es Bedarf nur ein wenig Übung :smile:

Jaaaaaaaaaa :frowning: :smile:)))

Aber so schlimm sind die nicht :smile: Man muss nur die Zusammenhaenge sehen, dann erklaert sich vieles von allein :smile:

Das ist ein guter Anfang, könnte aber sehr lang dauern *gg*

Naja schauen wir mal :smile:

Bis ich das alles kapiert habe brauche ich länger als die
Installation.

*feix* naja solange dauert die nun wieder auch nicht. Bei mir war es glaube sowas an die 20 Minuten :wink:

Das klingt gut, aber wenn man nur 32Bit Operationen hat, was
habe ich da von 64Bit?

Wenig, Was nuetzt dir ein Porsche auf einer 30 'er Zone?

Es kommt immermehr das blöde Vista. Vista ist 64 Bit basiernd
und ergo werden dann auch die Programme dafür ausgelegt!
Du selbst arbeitest ja auch schon mit einem 32 Bit Zahlensystem!

Auch hast du unter .NET den sogenannten uLong Datentyp und der ist 64 Bit basierend!

Ich drücke euch beiden die Daumen, die Programmiersrache zu
finden die für euch am Besten ist.

Naja ich habe mich entschieden, das ich umsteige. Auch wenn es verdammt schwer ist / wird. Aber ich habe VB geschafft und dann werde ich .Net auch schaffen. Egal wielange es dauert und was es für Nerven kostet! Das schoene daran ist, ich lerne auch heute noch Sachen, die ich in VB machen kann und nicht wusste :s

Wusstest du das man Parameter die man mit Byval uebergibt, dennoch in einer Sub aendern kann ? Das war mir neu, aber es geht :wink:

Und wenn in diesem Framework 8000 Klassen sind, da müssen doch
ein paar Klassen sein um zum Bleistift hier den CommunityChat
permanent auszulesen und auch da mal was reinzuschreiben
*lächel*

Puh, ich denke mal das es dafür sicher eine Lösung gibt. Man muesste nur die zeit haben, das alles mal zu testen :s

Anscheinend fehlen da bei VB6 paar APIs die das können:frowning:

Ich denke mal nicht. Es ist nur eine Frage des Aufwandes!

Man hat ja eine Textzeile! man kann das Fenster bestimmen und dies dann aktivieren, dann kann man einen Text senden

Zum Auslesen. Hmm, ich würde einen Thread basteln, der stetig das Fenster abfragt und wenn sich was geaendert hat, dann volla, auslesen und anzeigen :smile:

Du hast es super versucht, aber auf verdörrtem Boden wächst
selten ein Baum der Erkenntnis, ich sehs jetzt so, bei .NET
muß man, vielleicht in der Exe versteckt, das framework
mitausliefern.

NEIN! Ist es bei Dir nicht installiert und du magst einen Anwendung installieren die mit .NET geschrieben wurde, so musst du genau 1 mal das Framework installieren und dann nie wieder! Das Framework selbst kannst du dir dann aus dem Netz laden. Ist ja kostenfrei :wink:

Bei VB6 halt die DLLs, auch da zur Not in der Exe versteckt.
Und wenn in beiden Fällen das Verstecken nicht geht, dann halt
das Framework extra mitschicken, bzw. die DLLs.

Machbar ist alles. Wozu gibt es unter VB6 Ressourcen *zwinker*

Und, eine vielleicht blöde Frage,
im uraltBasic gabs die Anweisung Circle(50,60,100).
Dadurch wurde um die Bildschirmkoordinaten x=50, y=60 ein
Kreis mit dem Radiaus 100 gezeichnet.
Durch den Start des Basicprogramms wurde es interpretiert,
also in Assemblercode umgesetzt, der dann ausgeführt wird.
Wenn ich nun in VB6 oder .NET auch sage, zeichne mir einen
Kreis, dann wird das doch in den gleichen Assemblercode
umgestezt, also ist doch dann .NET, VB6, uraltBasic gleich
schnell.
Lassen wir mal Interpreter und Kompiler weg *gg*

NEIN und den Compilier koemma net weglassen :s

Unter VB6, ist es richtig. Da dort MaschinenCode erzeugt wird der auf allen Maschinen laufen muss. Unter .NET liegt der Source nur im IL vor, welches dann der JITTER bei Bedarf erst compiliert und den Source , der CPU anpasst!

Ich hoffe ich habe dir mein Unverständnis verständlich sagen
können:smile:
Gruß
Reinhard

MfG Alex

Hallo Rainer,

ich daechte ich hatte hierrauf schon geantwortet und dir die Buecher geschickt :s Nunja so kann man sich irren :frowning:
Ich schicke dir gleich im Anschluss die Mail. Musst nur mal schauen, sind glaube sowas ueber 10 MB :wink:

MfG Alex

1 Like

Hi Alex,

ich daechte ich hatte hierrauf schon geantwortet und dir die
Buecher geschickt :s Nunja so kann man sich irren :frowning:

macht ja nichts. Ich behaupte dann immer, daß ich nur beweisen wollte, daß ich ein Mensch bin. :smile:

Ich schicke dir gleich im Anschluss die Mail. Musst nur mal
schauen, sind glaube sowas ueber 10 MB :wink:

Ja, ist da, herzlichen Dank! Übernächste Woche habe ich Urlaub … :smile:

Gruß, Rainer