Laden...

Forenbeiträge von Bionic Ingesamt 214 Beiträge

13.10.2005 - 00:36 Uhr

Danke dir svenson vielmals 😉 So kann ich die Funktion verwenden 👍

Bionic

12.10.2005 - 13:21 Uhr

Tach zusammen,

ich importiere aus eine Delphi DLL folgende Funktion:


type
  Tpaket=record
         befehl: integer;       
         pause: integer;        
         daten: string;          
         end;

function ping(var stan: byte; var messwert: integer): boolean;
var
   paket: Tpaket;
   temp: string;
   proportion: integer;
   wert: integer;
begin
ping:=false;
messwert:=-1;
stan:=0;
paket.befehl:=1; //Hardware Reset
paket.pause:=30;
paket.daten:='';
temp:=nad_odb(paket);
if (length(temp)=4) then
   begin
   if temp[1]=chr(202) then
      begin
      ping:=true;
      stan:=ord(temp[2]);
      wert:=ord(temp[3]);
      proportion:=ord(temp[4]);
      if proportion<>0 then
      messwert:=round((wert*200)/proportion) else
      messwert:=-1;
      end;
   end;
end;

mit folgendem Parameter:

[DllImport("Driver.dll", CharSet = CharSet.Auto)]
		public static extern bool ping(byte stan, int war);

Ich deklariere mir dann zwei temporäre Variablen, um die Werte "stan" und "messwert" aus der ping()-Funktion rauszubekommen.


			int war = new int();
			Byte stan = new Byte();

			war = 0;
			stan = 0;

			if( ping(stan, war) ) 
			{
				if( (stan & 7) != 7 ) 
				{
					war = -1;
				}
				else 
				{
					if( war > 200 ) 
					{
						war = 200;
					}
				}
				wert_temp = war;
				stan_temp = stan;
			}

Starte ich die Applikation, so wird mir eine System.NullReferenceException entgegen geworfen mit dem Hinweis "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
Und jetzt stehe ich auf dem Schlauch. Ich hab hier auf dem Board die Suche bemüht, aber bin leider nicht weit gekommen. Vielleicht kann mir jemand von euch einen Tipp geben, wieso die Exception geworfen wurde und wie ich das verhindern kann.
Ich will eigentlich nicht mehr als nur die zwei Übergabeparameter der Funktion ping() auslesen.

Besten Dank im voraus 😉

Bionic

30.09.2005 - 18:15 Uhr

OH MANN - ich hätte die Nacht doch etwas schlafen sollen.
Danke dir vielmals herbivore 😉

Dann kann ich ja weiterbasteln 😁

Gruß Bionic

30.09.2005 - 18:06 Uhr

Und wieder ich 😁

Ich habe gerade versucht eine DLL, welche in Delphi erstellt wurde in mein C# Projekt mittels DLLImport einzubinden.

[DLLImport("Driver.dll")]
private static extern void reset_synchro();

Habe den Namespace "System.Runtime.InteropServices" mit angegeben und trotzdem folgende Fehlermeldung erhalten:

error CS0246: Der Typ oder Namespace 'DLLImport' konnte nicht gefunden werden.
Möglicherweise fehlt eine Anweisung oder ein Assemblyverweis.

Ich würds ja verstehen wenn er mir sagen würde, dass er die DLL nicht finden kann. Aber das er mit dem Typen 'DLLImport' nichts anfangen kann, das ist für mich recht komisch.
Was mache ich falsch?

Dann würde ich gerne noch etwas anderes in Verbindung mit DLLImport wissen. Woher importiert er die DLL bzw. in welchem Verzeichnis muss die DLL letztendlich liegen, damit er sie importieren kann?

Besten Dank im voraus 😉

Bionic

30.09.2005 - 16:26 Uhr

Tach auch,

ich habe mir eine SQLite Datenbank erstellt und kann diese per Software füllen, abfragen und die Datensätze ändern. Soweit so gut.
Nun möchte ich aber, das man einen Datensatz aus der Tabelle auswählen kann, um damit weiter zu arbeiten.

Bei mir sieht das so aus. Ich habe eine Kundentabelle, in der die Kundenspezifischen Daten gespeichert werden, wie Name, Adresse, etc.
Nun möchte ich eine weitere Tabelle haben, in der für jeden Kunden Messdaten gespeichert werden. Diese Tabelle referenziert auf die KundenID in der Kundentabelle.
Ich würde dann einfach nur die KundenID aus der Tabelle abfragen, diese in eine Klassenvariable speichern und mit der dann die Messdaten in die andere Tabelle speichern.

Meine Frage ist nun, woher weiß ich welchen Datensatz der Benutzer aus dem DataGrid ausgewählt hat? Gibt es eine Möglichkeit per Doppelklick im DataGrid einen Datensatz auszuwählen? Mir wäre es am liebsten, wenn der Benutzer auf den Datensatz, den er auswählen möchte einen Doppelklick ausführt und ich dadurch mir dann die KundenID speichern kann. Leider fällt mir da irgendwie der Ansatz, wie ich vorgehen soll 😭

Was das angeht stehe ich so ziemlich auf den Schlauch und weiß momentan nicht wie ich dies bewerkstelligen soll.
Über einen Ratschlag wäre sich euch sehr dankbar 😉

Gruß Bionic

30.09.2005 - 14:36 Uhr

Tach zusammen,

ich wollte mal im Vorfeld nachfragen, ob jemand von euch schon mal die erstellten Diagramme aus ZedGraph aus der Software heraus gedruckt hat bzw. ob dies ohne großen Aufwand möglich ist?

Da ich vorhabe die von mir erstellten Diagramme aus der Software heraus zu drucken, wollte ich mich mal im Vorfeld informieren ob das Möglich ist.
Vielleicht hat der Eine oder Andere von euch ein paar Tipps für mich. Wäre euch sehr dankbar 😉

Gruß Bionic

20.09.2005 - 23:44 Uhr

Das mit meiner Frage hat sich erledigt. Du hast vollkommen recht. Ein Blick in den Ordner hätte meine Frage schnell beantworten können.

Nochmal vielen Dank dir FZelle für die Hilfe 😉

19.09.2005 - 20:11 Uhr

Da haben wir also den Fehler. Ich hatte die anderen DLL's nur im bin Verzeichnis und nicht im Debug Verzeichnis.
Jetzt klappt alles wunderbar.

Danke dir nochmal FZelle 😉

Was SQLite angeht, hätte ich noch ein paar Fragen.

Wie verwaltet die DB-Engine die Datenbanken bzw. wo speichert sie diese ab?
Nehmen wir mal an, ich erstelle beim Starten meine Programmes eine Datenbank. Fülle diese im Betrieb des Programm auf und schließe dann mein Programm. Wo sind die Daten dann gespeichert? Ich muss ja beim zweiten Programmaufruf ja auf dieselbe DB zugreifen.
Um die Datenbank nicht jedesmal zu überschreiben, reicht eine einfache Abfrage ob meine Datenbank schon existiert aus? Oder gibt es eine elegantere Lösung, immer wieder die ein und die selbe DB zu nutzen?

Gruß Bionic

19.09.2005 - 15:21 Uhr

Danke dir nochmal FZelle für die Infos 😉

Ich habe heute mal versucht etwas mit dem Wrapper zu spielen, leider bin ich schon ganz am Anfang gescheitert.

Als ich versuchte meinem Projekt die SQLite.dll als Verweis anzuhängen bekam ich jedesmal eine Fehlermeldung, die mir sagt

Dies ist keine gültige Assembly oder COM-Komponente. 
Es kann nur auf Assemblys mit der Erweiterung "dll" oder auf COM-Komponente verwiesen werden.
Stellen sie sicher, dass die Datei zugreifbar ist, und das sie eine gültige Assembly oder COM-Komponente ist.

Die SQLite.NET.dll kann ich hingegen als Verweis meinem Projekt hinzufügen. Doch leider sagt mir dann der Debugger beim Ausführen eines Befehls aus diesem Wrapper, dass er die SQLite3.dll nicht laden kann.
Ich bin nach diesem kleinen Tutorials vorgegangen: http://adodotnetsqlite.sourceforge.net/documentation/csharp_example.php

Vielleicht weiß jemand von euch Rat und kann mir helfen.

Gruß Bionic

19.09.2005 - 13:49 Uhr

Ah OK, danke dir für den Hinweis jacki.
Da ich meine Elemente sowieso in einer GroupBox habe, ist das kein großer Aufwand diese unsichtbar zu machen.

Eine weitere Frage habe ich aber noch, im Windows.Form Designer sehe ich die Elemente dennoch, trotz des visible=false. Gibt es da eine elegenta Lösung, diese auf der Form auszublenden, um das neue Layout zu gestalten ohne das sich die beiden überlappen?

Gruß Bionic

19.09.2005 - 13:29 Uhr

Tach zusammen,

ich würde folgendes Realisieren wollen und zwar habe ich ein Fenster mit einer Toolbar. Unter der Toolbar sind Textboxen für die Dateneingabe, wie Name, Adresse etc.
Nun möchte ich nach Eingabe und Speichern der Daten das Layout mit den Textboxen nicht mehr sichtbar haben, sondern ein anderes Layout dafür.
Sprich ich will, sofern man die Daten eingegeben und gespeichert hat, ein anderes Layout anzeigen, wo zum Beispiel der Benutzer dann einfach seine Daten einsehen aber nicht bearbeiten kann ohne jetzt dass ich ein zweites Fenster öffne.
Vergleichbar wäre das mit den Frames in HTML. Ich will nur, dass sich sozusagen nur der "Content" ändert aber nicht das gesamte Fenster.

Wenn mir hier jemand von euch Tipps oder Hinweise geben könnte, wie ich das bewerkstelligen oder wo ich darüber etwas nachlesen kann, wäre ich sehr dankbar 😉

Gruß Bionic

16.09.2005 - 16:22 Uhr

Danke auch dir FZelle für die Links, vorallem der QueryAnalyser ist sehr fein 😉
Kann es aber sein, dass es zu dem Wrapper keine Doku gibt? Außer den 3 kleinen Tutorials auf SF habe ich nichts gefunden.

10.09.2005 - 20:10 Uhr

Danke dir LordK 😉

Werde mir SQLite mal näher anschauen und ganz besonders die Wrapperklasse. Das könnte durchaus für mein kleines Vorhaben bestens geeignet sein.

Schönen Gruß Bionic

10.09.2005 - 16:42 Uhr

Tach zusammen,

ich arbeite mich gerade ein wenig in C# ein und würde gern zu Anfang ein Kundenverwaltungstool programmieren. Es soll nichts aufwendiges werden.

Man hat die Möglichkeit, seine persönliche Daten wie Name, Adresse, Geburtsjahr etc. einzugeben und zu jeder Person sollen noch Messdaten gespeichert werden. Jede Person kann mehrere Messdaten haben, sprich Messdaten von gestern oder von vor einer Woche. Die Messdaten sind nichts anderes als positive Ganzzahlen, 12 Stück an der Zahl.
Eine weitere Funktion wäre es, verschiedene Messungen mit einander zu vergleichen und diese in verschiedenen Diagrammen darzustellen.

Meine Frage ist nun, welches System würde sich für das Ablegen der Daten am besten eignen? Welche Datenbank könnte ich dafür nutzen?

Da ich mit Datenbanken im Desktopbereich noch nichts gemacht habe, hoffe ich auf ein bißchen Hilfe von euch 🙂 Bin auch für Links zur guten Lektüren, was dieses Gebit angeht sehr dankbar.

Schönen Gruß Bionic