Hallo Reinhard,
? das ist doch genau was ich sagte/meinte, im eigentlichen
Codemodul schreiben sie oben halt rein binde api.h ein und
fertig.
Was in C halt das importieren der Header Dateien sind, ist in .Net zum Bsp. das importieren von Namensspace. In VB6 sind es halt die Runtimes, die du aber nicht angeben musst
Warum ich angefragt habe ist ja nur, bzw. hat den
Hintergrund, mich stört es halt ungemein, wenn ich ein Modul
sehe und von den obersten 10-60 Zeilen nix habe weile das nur
gebündelte Deklarationen sind, erst dann kommt der eigentliche
Code.
Es ist ein wenig nervig. Deswegen schrieb ich Dir auch. Hey lege Dir ein Modul zum Bsp. vbAPI an und schreibe dort alle Declarationen rein.
Den Source kannst du dann irgendwo anders im Proggi unterbringen und schon siehst du die ganzen Declarationen nicht! Selbst wenn Dich das stören sollte, dann schreibst du halt eine Wrapper DLL, wo du alle Definitionen rein machst und dann die zugehörigen Functionen / Subs. Die DLL kannst du dann in Dein Proggi einbinden und schon siehst du rein garnichts mehr
Könnte man die Deklarationen unterhalb des Codes machen hätte
ich gar nicht gefragt *vielleicht*
Also unter .NET geht das. Da spielt es keine Rolle wo man die Declaration macht, so lange sie nur in der Klasse sind!
Ja, so wird es sein und so stelle ich mir das auch vor, eine
kompilierte Exe, äh das war jetzt irgendwie Verdopplung, oder
gibts auch unkompilierte exe? , müße sollte soviel wie
möglich in sich haben um zu funktionieren, überall.
Owei nun hast du etwas angeschnitten *grins*
Also …
Ein Program wird unter VB mit der Version bis 6 durch das kompilieren in einen MaschinenCode übersetzt. Das Resultat daraus ist halt die EXE Datei, was Deine erste Frage nun beantwortet. In .NET ist das ein wenig anders. Dort wird durch das kompilieren der Source in einen sogeannten IL Source übersetzt. Der Prozessor dagegen kann aber mit dem „Code“ nichts anfangen. Aber genau da kommt dann das Framework ins Spiel! Dieser übersetzt Dir den IL Code in MaschinenCode den Dein Prozessor ausführen kann. Warum das alles? Jeder Prozessor hat eine Befehlssatz den er interpretieren kann. In diesen werden programme übersetzt die bis zur Version 6 von VB geschrieben wurden! Klingt komfortable ist aber nicht performant genug. Das Framework wird bei der Installation an den Prozessor angepasst, somit wird dann auch der IL Code an den Prozessor angepasst, was zur Folge hat das die Programme etwas schneller laufen
Aber Reinhard das ist eine Thematik, worüber ich Tage lang schreiben könnte. Aber vom Prinzip her, hast du ja verstanden was ich meinte
Schon, aber mich stört es halt wenn ich oben 40 Zeilen habe
und unten erst die 20 Zeilen Code die mich eigentlich
interessieren.
Dann schreibe die Declarationen in ein Modul. Und in diesem Modul schreibst du NUR die Declarationen rein. In ein anderes Modul dann halt die Aufrufe Dann siehst du sie nicht. Und wenn Dich das stört, dann schreibe Dir halt die Wrapper DLL und binde diese ein.
Das kann durchaus eine psychologische Macke von mir sein.
Wenn ich Code teste, der zwar funktionieret aber noch macken
hat, so schmeiß ich den ja nicht weg. Ich kopier den und füge
ihn wieder ein.
Also entweder der Source klappt oder er hat Fehler *grins* Beides zur gleichen Zeit geht nicht!
Den unteren kommentiere ich aus oder bennen ihn kurz um.
Warum? Ändern so das er läuft!
Und bastle dann am oberen weiter.
Beim compilieren werden zwar alle Kommentare entfernt aber in der Hochsprache steht er da und das finde ich dreimal nerviger als ein paar Declarationen, wobei diese auch ihren Sinn haben.
Wie das andere machen, k.A. *Schulterzuck*
Gleich richtig schreiben oder den Fehlerhaften Source korrigieren!
Soll das jetzt bedeuten DefType nicht „auslagern“ in ein
anderes Modul, deshalb kommt dann so ein „Bock“ oder meinst du
etwas anderes?
Nein, ich meinte auf DefType sprich DefInt, DefByte etc. ganz verzichten und stattdessen nur das nötigste mit ausschlagebenden Worten declarieren und viel als Parameter übergeben. Nicht so viel als Public definieren etc. Das kann schnell zu unerwünschten Effekten führen!
Tztz, so jung und schon Alzheimer, weißte wenigstens noch
dessen Vornamen? *besorgt schau* *kicher*
Ähmmm, ich würde jetzt pauschal sagen Adonis aber ich glaub Alois war er oder?
Am besten ist es ein Modul anzulegen mit dem Namen vbAPI
Dortrein halt alle Declarationen und Konstanten. Beide als
Public und im Program dann nur die API aufrufen
Also diese Deftype auch oder nicht?
Nein auf DefType ganz verzichten! Warum willst du das bindend nutzen?
Irgendwo liesst Du dann eine Variable und siehst was ihr für ein Wert zugewiesen wird. Nun stehst du da und sagst Dir … Boar als was habe ich die denn definiert … und dann beginnst du zu suchen… Besser ist es die Variablen so zu definieren wie du sie brauchst und vor allen nur wann!
Ich wußt genau als ich deinen Namen las, ich brauch wieder
einen Dometscher, so wie jezt bei diesem Satz *gg*
Was konnte man denn daran nicht verstehen Reinhard? Schau ich habe zum Bsp. einen Dozenten, der mir gelegentlich hilft bei dem einen anderen Problem. Aber du musst mal die Antworten lesen, da legst du die Ohren an *grins* Er selber postet selten Source, er will halt das du selber drauf kommst. Ich dagegen versuche Dir das haarklein vorzukauen Und wenn du mal etwas nicht verstehst, so sage dann halt einfach bescheid. Dann probiere ich es eben anders. Solange bis es klick gemacht hat
Die Schreibarbeit oder Reinkopierarbeit ist mir gleich, aber
ich will ja API nur benutzen, wie alle anderen Befehle
Funktionen in VB/Vba.
Das kannst du ja!
Zum Bsp. Du hast 2 Formulare. Diesen machen ihren Dienst und greifen auf ein paar Functionen zu. Also beide Formulare auf die selben Funktionen. Was bietet sich da an ? Ok, wir legen die Function in ein Modul und rufen Sie nur auf! In den Formularen oder auch in dem Modul greifst du wiederrum auf API’s zu. Was spricht dann gegen folgende Vorgehensweise
Form1 -\> Dein 1 Formular
Form2 -\> Dein 2 Formular
modAllgemein -\> Modul mit deinen allgemeinen Functionen
modDEc -\> Modul wo du nur Declarationen der API's rein machst
Wenn du dir nun den Source anschaust, so blicke einfach nicht in die modDec rein Schon siehst du keine Declaration mehr!
Daß die jetzt unterschiedlich sind spielt ja für das was ich
will keine Rolle.
Also in .NET schon. Je nachdem wie du sie declarierst kannst Du sie nicht in ein Modul packen
Bsp.: Ich will im Code den Befehl InStr(…) benutzen.
Könnte ja rein theoretisch sein Vb Funktionen brauchen so
wie APIs Deklaration im Code.
Dann würd ja da auch „Oben“ stehen:
Private Declare Instr ALias …
Und das für jeden benutzten VB-Befehl, eieieiei, dann würd
der Vorspann aber recht lang
Nicht wenn du ihn zum Bsp. in die modDec packen würdest und sie als Public Declarierst
Ich bedanke mich für alle Antworten. Ich weiß jetzt mit viel
mehr Sicherheit als wenn ich es einfach mal getestet hätte,
ich kann die Deklarationen in ein anderes Modul auslagern. Das
hilft mir.
Offen ist einzig noch das mit DefType. Da hat mich Alex
verunsichert.
So dann frage mal nocht bitte genauer nach, wo du nun unsicher bist Reinhard Aber antworten kann ich erst wieder am WE, da ich die Woche nun nach Chemnitz muss :s
Gruß
Reinhard
MfG Alex