Laden...
S
Smou myCSharp.de - Member
Kfm im EH, Trainee for specialized computer science Fürstenfeldbruck Dabei seit 03.04.2008 341 Beiträge
Benutzerbeschreibung

Forenbeiträge von Smou Ingesamt 341 Beiträge

07.04.2011 - 11:25 Uhr

Servus,

wenn du den bgw zu ende laufen lässt und es wie winSharp93 schon geschrieben hat, ihn mit einem Timer startest kannst du auch mehr als nur eine Zahl zurück geben 😉
Dann hilft dir nämlich das Completed-Event

grüße

06.04.2011 - 16:06 Uhr

() => { ... }
nennt sich Lambda und ist in dem Fall ein anonyme Methode ja.

EDIT: @ unconnected: scusa 😛 für den Tippfehler.

06.04.2011 - 15:59 Uhr

BTW: Wenn du Transaktionen nutzt schau dir auch das Schlüsselwort using an. Wäre in so einem Fall ganz gut.

06.04.2011 - 11:10 Uhr

Servus,

wenn die werte pro Zeile alle unterschiedlich sind wirst du nicht drum herum kommen.
Allerdings was heißt lange? wie schickst du die Befehle weg? Ich hoffe doch in einer Transaktion ansonsten würde mich nichts wundern.

und wie baust du die sql befehle zusammen.

05.04.2011 - 09:40 Uhr

gezippt ist sie meines Wissens nicht und das es nicht lesbar ist stimme ich vollkommen zu 😉. Es ist ja auch kein reines XML da M$ da noch ein haufen unschöne Dinge reinschreibt. Aber prinzipiell ist es ausreichend sie einzuchecken und mittels anderen Tools zu vergleichen.

05.04.2011 - 09:35 Uhr

Wenn du im entferntesten Sinn eine Architektur umsetzen willst sicher 😉

Aber Invoke brauchst du vllt garnicht.

GUI bekommt Daten von einer Modelklasse
und die Modelklasse bekommt oder holt sich die Daten aus deiner Kommunikationsklasse.

GUI bekommst die Daten per Datenbindung.
Wäre mein spontaner Vorschlag um die GUI möglichst stupide zu halten.

Grüße

04.04.2011 - 12:22 Uhr

auch SVN und GitHub zeigt dir Änderungen im Dokument an... was meinst du was SourceCode dateien sind?... Office-Dokumente sind auch nur XML-Datein.

04.04.2011 - 10:09 Uhr

Servus,

einmal google Versionverwaltung und hättest genug treffer gefunden.

SVN, Git etc...

als Beispiel... für eine 3-Sekunden Suche: https://github.com/plans

gruß

31.03.2011 - 13:27 Uhr

Ich würde mal das Stichwort REST einwerfen 😉

http://tomayko.com/writings/rest-to-my-wife

29.03.2011 - 17:01 Uhr

Servus,

da meine Coding-Glaskugel grad zum Aufladen in der Ecke steht kann ich dir nur sagen das du wohl unberechtigt schreibst oder die xy.ini blockiert ist.

Gruß

29.03.2011 - 10:23 Uhr

Naja.... wenn du mit databinding arbeitest sollte du vllt für die Funktionalität nicht die Liste binden sondern ein anderes Property und die entsprechende Logik im Model implementieren.

Gruß

25.03.2011 - 17:18 Uhr

Servus,

erb davon und dann kannst sie überschrieben.

Gewusst wie: Überschreiben der ToString-Methode (C#-Programmierhandbuch)

Grüße

25.03.2011 - 17:04 Uhr

Servus,

versuch doch mal Receive mit byte[8192] und schau mal ob beides drin steht 😉...

EDIT: PS: Schau dir doch mal die TcpClient Klasse an... vllt tust du dich damit leicher

Grüße

24.03.2011 - 10:36 Uhr

Servus,

mir fällt dazu ein dass du uns deinem Code mal zeigen solltest... meine Glaskugel ist zur Zeit bei der Reparatur 😉

gruß

23.03.2011 - 11:04 Uhr

Servus bzw Guten Morgen 😄

Ich habs genau verdreht... du hattest recht das DUN für die Handy-als-Modem-Funktion ist. "Ich bin sehr Entschuldigung" 😉

Für deinen Zweck würdest du also PAN benötigen.
Das heißt dein PC hat eine Internetverbindung und du brauchst mit PAN eine Verbindung zum PC auf der dann dem Handy die Internetverbindung bereitstellt bzw als Rounter fungiert.

http://mobileoffice.about.com/od/phonesformobileworkers/ht/bluetooth-cellphone-as-a-modem.htm

Alternativ, falls dein Handy Wlan hat, könntest du dein PC als WLAN Hotspot einrichten und mit deinem Handy verbinden. EDIT: Danke vagtler 😉

Grüße

22.03.2011 - 17:54 Uhr

Hast mir nix unterstellt passt scho ^^

DUN Dial-up Networking Profile Internet-Einwahlverbindung

Also meines wissens ist es genau dafür da.
Mit PAN wäre nach meinem Verständnis die Modem Funktion möglich.
Da man damit ein private area network auf macht.

Aber beles dich doch noch mal genauer zu DUN und poste deine ergebnisse würde mich auch interessieren wenn ich mich täusche ^^

gruß

22.03.2011 - 17:37 Uhr

Servus,

als ich weiß das die nur für palm ist... war nur so als beispiel eingeworfen da das Prozedere sich nicht groß unterscheiden sollte.

Aber wie bereits gesagt solltest du vllt erst einmal heraus finden ob dein Handy das Bluetooth Profil für deinen Anwendungsfall unterstützt...
Die meisten Handy haben noch nicht alle profile implementiert... die gängisten sind AVRCP, PBAP, A2DP, SCO, GAP und teilweise OBEX und FTP

Dein Handy müsste PAN oder DUN unterstützen damit eine verbindung ins internet über bluetooth möglich wäre.

Viele grüße

22.03.2011 - 15:10 Uhr

Servus,

Danke für die Info 😄... vllt hab ich das ja auch irgendwann mal.

Grüße

PS: [Hinweis] Wie poste ich richtig?

21.03.2011 - 16:29 Uhr

Servus,

Meld dich an allen Events an und geb ihnen die GeneraleHandler-Methode mit.
In der Method kannst du dann nach type unterscheiden und den string setzen der benötigt wird.

Ist zwar keine schöne Lösung aber eine die funktionieren wird ohne irgendwelche großartigen Hacks.

Eine bessere Lösung fällt mir spontan auch nicht ein.

grüße

21.03.2011 - 13:01 Uhr

Servus,

sofern dein Handy und dein PC das Protokoll für das "Bluetooth-Internet" unterstützen (das is nicht unbedingt standard) dann geht das auch.

http://www.skybert.de/anleitungen/internet/btlan/btlan.htm

Grüße

21.03.2011 - 12:26 Uhr

Servus,

das hat damit zu tun wie vertrauenswürdig deine Anwendung ist.

Eigene Anwendungen digital signieren - eine Mini-Einführung

Grüße

17.03.2011 - 14:23 Uhr

Natürlich unterstützt der ADO.NET DataService ein join.
Es werden nur nicht > 1 joins unterstützt weil das auch im sql nicht geht.

wenn du mehrere joins machen willst brauchst , wie auch schon erwähnt, mehrere subselects die nicht anderes sind als ein join.

17.03.2011 - 12:44 Uhr

join gerichte in bestelltagEntities.Gerichte on art.ArtID equals gerichte.Art_ID
join bestellungen in bestelltagEntities.Bestellungen on gerichte.GerichteID equals bestellungen.Gericht_ID
join mitarbeiter in bestelltagEntities.Mitarbeiter on bestellungen.Mitarbeiter_ID equals mitarbeiter.MitarbeiterID

{ Die Methode 'Join' wird nicht unterstützt.}

diese Zeilen sagen dir wo der fehler ist... wie ich schon weiter oben geschrieben hab... schade das du nicht alle antworten liest die man dir schreibt.

17.03.2011 - 11:11 Uhr

Teillösung:

Seltsamer weise wird beim Callback ein Pointer-Array (void**) als Pointer zurückgeliefert. Warum versteh nicht, aber vllt hat irgendjemand eine Ahnung warum.

Synchrone aufrufen mit einem void** wurde der Typ auch als IntPtr[] zurückgeliefert.

Grüße

17.03.2011 - 10:07 Uhr

Servus,

Kurz zur Situation:
Die vorhandene c++ dll soll über einen Callback Daten an die C# Klasse schicken.
Der Callback wird mit einer Funktion gesetzt.

Problem hier ist, dass der Callback nicht aufgerufen wird.
Wenn ich die Methoden und Funktion so ändere das der Callback keine void* oder void** enthält kommt der Callback zurück. Es liegt also am Marshalling der Pointer.

Hat jemand eine Ahnung wo das Problem liegt?

EDIT: Es läuft auf Windows Mobile , sprich Compact Framework... also ist CLI keine Option.

Vielen Dank im Vorraus

Grüße


// C++ Code
typedef int FNTMCALLBACK(long lCallerID, long lCode, int nInpData, void** ppInpData, int* pnOutData, void** ppOutData);

int CVitalEngineMEG::SetCallbackForObserver(PFNTMCALLBACK pCallback)
{
	m_pCallback = pCallback;
	TCHAR		szValue[256];
	wsprintf(szValue, TEXT("callback = %8x"), pCallback);
	MessageBox(NULL, szValue, TEXT("VitalEngineMEG"), MB_OK | MB_ICONEXCLAMATION);
	
	int		iState = MDC_EVT_STAT_RUNNING;
	int		iChannel = MDC_DEV_ANALY_SAT_O2_MDS;
    void*	pInpData[4];
    void*	pOutData[1];
    int		nInpData = 4;
    int		nOutData = 0;
	pInpData[0]	= (void*) &m_iDeviceIDSPO2;
	pInpData[1]	= (void*) &m_iDeviceTypeSPO2;
	pInpData[2]	= (void*) &iChannel;
	pInpData[3]	= (void*) &iState;

	if (m_pCallback)
		m_pCallback(MODULEID_VDD, VITAL_DEVSTAT_CHANGING, nInpData, pInpData, &nOutData, pOutData);

	return (ER_NOERROR);
}


// Der Import mit Delegate
public delegate Int32 VitalDataCallBackHandler(Int64 lCallerID, Int64 lCode, Int32 nInpDate, IntPtr[] ppInpData, IntPtr pnOutData, IntPtr[] ppOutData);

[DllImport("meine.dll")]
public static extern int SetCallbackForObserver(VitalDataCallBackHandler method);

// Der Aufruf und CallbackHandler
int returnValue = SetCallbackForObserver(HandleVitalSPO2Data);

private static int HandleVitalSPO2Data(long lCallerID, long lCode, int nInpDate, IntPtr[] ppInpData, IntPtr pnOutData, IntPtr[] ppOutData)
{
	return -1;
}

17.03.2011 - 09:55 Uhr

Servus,

laut meinem Wissensstand ist im einem select statement nur EIN join zulässig... weitere joins müssen mit einem subselect realisiert werden.

Grüße

16.03.2011 - 14:42 Uhr

Das solltest du dir vllt anschauen, lesen und verstehen wenn du mit der Forum suche nichts zu deinem Problem gefunden hast:

Wie Suche ich richtig?

Gruß

15.03.2011 - 14:58 Uhr

Servus,

reloop ich hoffe ich hab dich richtig verstanden...
Du möchtest code ausführen der nicht fest im programm hinterlegt ist und zur compilezeit des programm nicht vorhanden.

Ein äquivalent zu dem was du da hast hab ich noch keine gesehen, aber das problem kann man sicher auch anders lösen.

Andernfalls würd ich instinktiv davon ausgehen das du den code im "Textfeld" zur laufzeit compilieren musst um ihn ausführen zu können.

Grüße

PS: sei doch so freundlich und poste deine lösung hier sobald eine hast

14.03.2011 - 17:31 Uhr

Wie wärs wenn du aus den daten erstmal ein Bildobjekt machst...
Image-Klasse

14.03.2011 - 16:39 Uhr

hab ich mir schon gedacht... war mir aber nicht sicher.

also höhe pixel * breite pixel * farbtiefe bit = benötigter speicher.

bei der imageInfo kann ichs dir nicht sagen. musst du ausprobieren was er braucht.
Die imageInfo wird nicht stark variieren.

gruß

14.03.2011 - 15:42 Uhr

Du kannst es mit höhe, breite und farbtiefe ausrechnen.
Aber du kannst es auch mal mit marsgks' vorschlag versuchen.

Grüße

14.03.2011 - 14:53 Uhr

Auch Anfänger können, dürfen und sollten(!) die Suchfunktion oder Google benutzen 😄

Das nur als Beispiel für eine 3 sec Suche.
DLL Import C++ -> C# (Pointer auf Pointer)

Wenn ich dir jetzt genau erklär wie du das zu lösen hast, lernst du nix dabei.
Versuch dich mit dem Thema auseinander zu setzen und präsentiere deine Lösung hier. Wenn du irgendwo gar nicht weiter kommst kannst du natürlich gerne wieder fragen 😃 Und vergiss nicht den Code-Schnipsel damit wir schneller den Fehler sehen können.

Grüße

14.03.2011 - 14:09 Uhr

Der Pointer ist eine Speicherstelle an dem das Bild bzw die Bilddaten kurzfristig gespeichert sind.

Das Problem hier ist das wenn du das Bild auslesen willst die der GC die infos unter arsch weg zieht. Das heißt du musst den Speicher im c# reservieren und dafür sorgen das er nicht wieder freigegeben wird. Die dll legt das bild dann an der Stelle ab.

Und ja du bekommst nur ein short zurück der dir sagt ob es geklappt hat oder nicht.
Das ist das schöne an c++ ^^.

14.03.2011 - 13:37 Uhr

Die methode aus der dll (ich geh mal davon aus das es c++ oder ähnliches ist) im c# code als extern definieren

[DllImport("deineDLL")]
private static extern short FC_GetImage(IntPtr pImage, short xImage, short yImage, IntPtr pImageInfo);

Was hast du denn bisher gemacht? wie hast du es Probiert.
Hast du schon mal nach marshalling gesucht?

Grüße

14.03.2011 - 10:48 Uhr

Servus,

einfach einen Request mit GET der gewünschten seiten aufrufen.
Die Rückgabe ist das der header und der inhalt der seite.

EDIT: Schreib doch bitte noch die Lösung zu deinem ersten Problem hier rein.

Gruß

09.03.2011 - 16:33 Uhr

Servus Nelson,

Threading bzw die schönen Begin /End Methoden Benutzen.

Grüße

04.03.2011 - 15:33 Uhr

Bezüglich welcher Softwareergonomie? Generell oder unsere?

Allgemein 😉

Die Comboboxen sind eine Notwendigkeit um ein komplexes System einzustellen. (Ich will hier Komplex nicht als Ausrede für schlechte Usability vorschieben)

Okey ich verstehe. Also am Anfang hast du noch von 40 Dropboxen geredet... jetzt sind wir halt schon bei 100 die auf sichtbare und unsichtbare reiter verteilt sind wenn ich das richtig verstehe.

Also ich glaub wenn du nicht immer die GUI für 1 sec blockiert haben willst, wenn das entsprechende event kommt wirst wohl die einzelnen Reiter updaten müssen und nicht alle comboboxen.

Ich glaub nicht das der Aufwand viel größer ist als zu messen wie lang eine combobox braucht zum befüllen oder irgendwie rum zu wurschteln. Wenn der asynchrone aufruf schon nicht geht dann musst es wohl mit eigenen threads machen.

Würd mich interessieren wie du es löst.

04.03.2011 - 14:35 Uhr

Naja... sorry aber bei der Menge von Comboboxen würd ich eine sekunde nicht für untypisch halten.

Aber wenn es mehr werden reicht es nicht wenn du nur die combo boxen aktualisiert die aktuell zu sehen sind und nicht zusätzlich die, die über reiter noch zu erreichen sind?
Die anderen kannst du ja einem Thread aktualisieren.

hast du da schon mal ein bisl was bzgl software ergonomie in erfahrung gebracht?

gruß

04.03.2011 - 14:20 Uhr

Hi,

wieviele Comboboxen hast du denn das du dann auf 1sec kommst? oO
Rein rechnerisch sind das 66!!! Das würd ich GUI technisch für eine konzeptionelle schwachstelle halten.

Grüße

04.03.2011 - 13:53 Uhr

Ich bin ein Entwickler der davon überzeugt ist das Unittests die durch CI regelmäßig ausgeführt werden viel zu QS beitragen. Allerdings müssen die tests sinnvoll sein und auch das testen was gewollt ist und nichts anderes 😃

Aber wie MrFluffy, schon gesagt hat ist es manchmal nicht möglich, da hilft nur Hand anlegen (lassen) 😉

Gruß

03.03.2011 - 14:11 Uhr

Servus,

also mit new(string) sollte es eigentlich gehen.
Normalerweise stehen Konstruktoren auch nicht in einem Interface 😄 zumindest hab ich es noch nie gesehen.

Hast du es denn mal mit new(string) probiert?

Gruß

03.03.2011 - 13:45 Uhr

Achsoo... das mit der Tabelle hab ich überlesen. Sorry.
Zeichnest du denn nach dem hinzufügen neu?

Wie man debugt findest du bitte selbst raus... wie man mit den entwicklerwerkzeugen umzugehen hat wird ansich vorausgesetzt 😉

03.03.2011 - 13:26 Uhr

Also ich weiß nicht was du da bastelst aber genau dein code wirft bei mir "Works" in die Console....

03.03.2011 - 13:06 Uhr

Servus,

bist du dir sicher das sich die Steuerelemente nicht einfach nur überlagern? 😉 Debug doch mal die Liste der Controls.

PS: Man muss die Controls auch positionieren wenn man sie hinzufügt.

Gruß

03.03.2011 - 12:59 Uhr

Sei so freundlich und versuch es mit keyPress und nicht mit KeyDown. 😉


private void treeView1_KeyPress(object sender, KeyPressEventArgs e)
        {
            System.Console.WriteLine(e.KeyCode.ToString() + " " + e.Control + " " + e.KeyData.ToString() + " " + e.KeyValue.ToString());
            if (e.KeyChar == 0x03)
            {
                   System.Console.WriteLine("Works!");
            }
        }

03.03.2011 - 12:42 Uhr

Was gibt er dir denn als Keychar zurück wenn du strg + C gedrück hälts und keypress registriert hast?

03.03.2011 - 12:34 Uhr

Servus,

du musst dem deinstaller beibringen das er die datei löschen soll.

gruß

03.03.2011 - 12:21 Uhr

Servus,

wenn der wert bei dem nichts drin steht bzw den du nicht befüllt hast wird der standard wert benutzt. das ist bei einem Int natürlich 0 und bei einem String null.
Um gehen... hmmm fällt mir spontan keine praktische lösung ein aber es geht mit sicherheit da beim binding soweit ich weiß die toString methode aufgerufen wird.
Eine Einstellung kenn ich spontan auch keine aber vllt die anderen.

gruß

02.03.2011 - 15:37 Uhr

Servus,

versuchs doch mal 2 '&' und nicht mit einem 😉

private void treeView1_KeyDown(object sender, KeyEventArgs e)
        {
            System.Console.WriteLine(e.KeyCode.ToString() + " " + e.Control + " " + e.KeyData.ToString() + " " + e.KeyValue.ToString());
            if (e.Control && (e.KeyCode == Keys.C))
            {

            }
        }

[edit]
Die Erklärung warum: Operator & (C#-Referenz)
[/edit]

02.03.2011 - 15:15 Uhr

Du musst dir da natürlich ein konzept überlegen ^^ was du in so einem fall machst...
Gui sperren? Oder den Change Event abfangen und dem thread neue aufgaben geben 😉