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
() => { ... }
nennt sich Lambda und ist in dem Fall ein anonyme Methode ja.
EDIT: @ unconnected: scusa 😛 für den Tippfehler.
BTW: Wenn du Transaktionen nutzt schau dir auch das Schlüsselwort using an. Wäre in so einem Fall ganz gut.
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.
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.
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
auch SVN und GitHub zeigt dir Änderungen im Dokument an... was meinst du was SourceCode dateien sind?... Office-Dokumente sind auch nur XML-Datein.
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ß
Ich würde mal das Stichwort REST einwerfen 😉
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ß
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ß
Servus,
erb davon und dann kannst sie überschrieben.
Gewusst wie: Überschreiben der ToString-Methode (C#-Programmierhandbuch)
Grüße
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
Servus,
mir fällt dazu ein dass du uns deinem Code mal zeigen solltest... meine Glaskugel ist zur Zeit bei der Reparatur 😉
gruß
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
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ß
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
Servus,
Danke für die Info 😄... vllt hab ich das ja auch irgendwann mal.
Grüße
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
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
Servus,
das hat damit zu tun wie vertrauenswürdig deine Anwendung ist.
Eigene Anwendungen digital signieren - eine Mini-Einführung
Grüße
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.
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.
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
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;
}
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
Das solltest du dir vllt anschauen, lesen und verstehen wenn du mit der Forum suche nichts zu deinem Problem gefunden hast:
Gruß
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
Wie wärs wenn du aus den daten erstmal ein Bildobjekt machst...
Image-Klasse
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ß
Du kannst es mit höhe, breite und farbtiefe ausrechnen.
Aber du kannst es auch mal mit marsgks' vorschlag versuchen.
Grüße
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
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++ ^^.
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
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ß
Servus Nelson,
Threading bzw die schönen Begin /End Methoden Benutzen.
Grüße
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.
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ß
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
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ß
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ß
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 😉
Also ich weiß nicht was du da bastelst aber genau dein code wirft bei mir "Works" in die Console....
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ß
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!");
}
}
Was gibt er dir denn als Keychar zurück wenn du strg + C gedrück hälts und keypress registriert hast?
Servus,
du musst dem deinstaller beibringen das er die datei löschen soll.
gruß
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ß
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]
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 😉