Laden...

Forenbeiträge von trib Ingesamt 708 Beiträge

21.09.2011 - 14:05 Uhr

Hallo Tazzo,

du benötigst natürlich den C# Compiler. Der nennt sich csc.exe.
Wenn ich manuell kompilieren "musste" habe ich mir eine *.Bat Datei erzeugt und neben meine *.cs Datei gelegt.
Inhalt dann etwa so:

csc /nologo /target:winexe DateiName.cs
Pause

Alternativ kann man das natürlich auch gleich in die Kommandozeile eintippen.

21.09.2011 - 09:30 Uhr

Du müßtest dann auch auf eine Mindesteingabelänge prüfen, [...]

Nein, warum?
Eine Textbox löst erst ein Validate aus, wenn er mit der Enter- oder TabTaste das Feld verlässt. Dann ist es doch vollkommen egal ob er 3 Sekunden oder 20 Minuten auf seiner Tastatur herumtippt.
Alles was länger als (aus der Luft gegriffen) 0,5 Sekunden dauert, ist ein Mensch => Fertig 😃

Je nach Arbeitsweise der Lageristen, kann man mit Validate oder LostFocus arbeiten oder auch KeyDown auf den Return Key prüfen.

19.09.2011 - 13:15 Uhr

Hallo zusammen,

erstmal generell zu den Piraten(parteien):
Dies ist ja nicht unbedingt eine nationales Unterfangen, da sich in vielen Ländern aus den Bewegungen Parteien bilden.
Momentan polarisieren diese Piratenparteien ähnlich den Grünen Ende der 80er. Ein Haufen Rollkragenpulliträger, die Probleme von Bürgern aufgreifen, die in der Politik bisher keinen Platz hatten.
Vorher Tier-& Umweltschutz, heute Datenschutz und Aufklärung (Auf das Internet bezogen).

Nun ist das rapide Wachstum der Piratenpartei auch deren größtes Problem. Wo sollen ein paar wahllos zusammengewürfelte Einzelpersonen auf einmal ein Parteiprogramm bereitstellen, welches die Interessen der Wähler aber auch der Gründer vertritt.

Generelle Straffreiheit beim Laden von Musik oder Software ist einfach nicht salonfähig. Stellt aber den Ursprung der Piraten dar. Also gibt es nun Kompromisse. Und exakt so liest sich deren Programm (mit den oben genannten Punkten) auch.

Kurzfristig sehe ich ein Umdenken bei den anderen Parteien, die sich den Themen Software Recht und Internetsicherheit befassen. Langfristig mutiert die Piratenpartei zu einer kommerziell ausgerichteten Partei wie alle anderen auch 😉

Daher sehe ich keine Änderungen in irgendwelchen Patentrechten auf uns zukommen. Meines Erachtens wird nur das, was wir als ITler schon wissen nun an die breite Masse gebracht.

Bezogen auf Verwertungsrechte:
Es ist ja schön und gut sein Geld per Dienstleistung zu verdienen und das Kernprodukt kostenlos zu vertreiben. Kauft man selbst diese Kernprodukt ein, ist doch der Hersteller auch mein Dienstleister und ich muss ihn entlohnen.
Wie TV Kaiser sagen würde: "Ein Teufelskreis" 😉

Wenn mein Nachbar Gärtner ist und ich ihn meinen Rasen mähen lasse, ist jedem Menschen klar, dass dieser dafür bezahlt wird. Es ist sein Job und es kostet ihn Zeit.
Passe ich mal "eben" eine Software an oder leiste telefonisch Support ist dies immer alles kostenlos, da das Ergebnis nicht greifbar ist.
Genauso wie mit Musik oder Filmen (Klaue ich ja nicht physisch, die bleibt ja wo ist ist^^)
Haut irgendwie nicht so hin, oder?

Bislang reguliert sich der Markt ganz gut selbst und kann entscheiden ob er durch die Software, Werbung oder Support sein Geld verdienen möchte.

Die 8% in Berlin werden auch keinen Streit zwischen Apple und Samsung gesetzlich regulieren können 😄

Kurzum: Es bleibt alles wie es ist!

19.09.2011 - 09:11 Uhr

Eine dritte, etwas unkonventionelle Methode ist, die Dauer der Eingabe bis zum Validieren des Textfeldes zu berechnen.
In der Regel schickt der Barcodescanner die Werte + Return (Carriage Return | Linefeed) in wenigen Millisekunden. Ein schneller Lagermitarbeiter wird dort schlecht drankommen 😉

Sicherlich nicht die schönste Lösung, sie sollte aber mit allen Scannermodellen funktionieren. Die Modelle unterscheiden sich deutlich in ihren Fähigkeiten. Setzt du nun auf z.B. STX & ETX als Start- und Endzeichen, so könnte es passieren das ein günstiger Scanner diese Zeichen nicht unterstützt.

Persönlich würde ich es davon abhängig machen, wie Wahrscheinlich es ist andere Scanner einzusetzen. Oder man dem Kunden das als Mindestanforderung verkauft.

13.09.2011 - 10:41 Uhr

Ein nicht unbeachteter Punkt sollte auch die Aufzeichnung der Bewegungsdaten sein.

Dank Handy, Payback, Facebook und Google kann problemlos über jeden Menschen in Zentraleuropa ein genaues Profil abgerufen werden.
Kombinieren wir dies noch mit der Kredit-/Bankkarte, so gibt es eigentlich nicht mehr viel, was noch unentdeckt bleibt.

Nun haben wir Autos, die wir mit unserer Kreditkarte, Handy oder was auch immer, öffnen können. Nach herbivores Vision Kamera überwacht um Vandalismus vorzugreifen.

Herzlich willkommen in einem totalitär überwachten Staat!

Wer steuert das "Zentralgehirn" der Autos? Mercedes und BMW, oder behält sich der Staat das vor um einfacher seine Kilometerabrechnung für ELENA vorzunehmen?

Abgesehen von allen oben genannten Vorteilen ist das eine mehr als erschreckende Vorstellung.

Zum Thema angreifbar:
Da mittlerweile schon Jugendliche ihre iPhones hacken, wird es in Zukunft nicht ruhiger um die Homebrew-Szene. Wer weiß was die individuellen Personen mit den Fahrzeugen anstellen werden.
Garnicht abzusehen, wenn eben der Fall eines terroristischen Angriffes eintritt...

12.09.2011 - 13:48 Uhr

Hallo zusammen,

sicherlich bin ich auch der Meinung, dass es irgendwann zu einer weiter fortgeschrittenen Automatisierung, eben auch im Straßenverkehr kommen wird.

Früher konnte sich niemand vorstellen, das eine Roboter die Arbeit eines Menschen abnehmen kann. Mittlerweile baut die Industrie vermehrt auf menschenlose Fertigungsstraßen, da neben der Kosteneffizienz auch die Qualität in vielen Bereichen steigt.

Auf der anderen Seite sehe ich das Schienennetz der DB, wo eine Automatisierung ein leichtes wäre. Keine Kurven, keine geänderten Wegstrecken, kein Gegenverkehr...
Trotzdem ist es noch nicht annäherungsweise zu einer autagen Bahnflotte gekommen.
Nichtmal "nur" für den Güterverkehr, wo bekanntlich keine Menschen drin sitzen.

Hier um die Ecke hängt (obwohl "steht" auch eine treffende Bezeichnung wäre) der SkyTrain von Siemens am Düsseldorfer Flughafen.
Es gibt 3 Haltestellen, 2 Trassen und 2 Züge. Also eigentlich kein großer Akt.
Allerdings hat es ca. 3 Jahre gedauert, bis der Zug regelmäßig gefahren ist. Soweit ich weiß steht auch immer (zumindest Tagsüber) ein Einweiser dort drin. Dann hat sich das wegrationalisieren des Fahrers immens gelohnt...

Gerade der versicherungstechnische Aspekt ist nicht zu vernachlässigen. Daran wird das Projekt letztendlich auch zu knabbern haben.
Was das Google-Auto bereits vormacht klingt vielversprechend. Trotzdem sehe ich erstmal langfristig nur militärische Einsatzgebiete. Die Industrie arbeitet schon mit autonomen Staplern und anderen Fahrzeugen.
Der Sprung in die Gesellschaft wird meines Erachtens noch viele, viele Jahre dauern.

Angst vor dem Kontrollverlust, die Versicherungsfrage und die Ausfallquote von Software & Technik werden erstmal als KO Kriterium überwiegen.
So wie es jetzt schon der Fall ist, wird langsam aber sicher eine Fahrerunterstützung für bestimmte Situationen integriert (Abstandsgesteuerter Tempomat, Spurassistent, Notbremssysteme) werden erschwinglicher und damit automatisch salonfähiger.
Der Sprung zum autagen Straßenfahrzeug sehe ich in den kommenden 15 Jahre noch nicht.

Persönlich würde ich mich als Fahrer keines Falls ersetzten wollen. Jedoch einen kleinen Schalter für Stopp&Go im Stau wäre eine echte Bereicherung 😃

26.08.2011 - 11:54 Uhr

Hallo exiter30,

das Programm erinnert mich etwas an KeePass, welches ich selbst aktiv im Einsatz habe.
Dort gibt es z.B. die Funktion die Passwörter einzublenden oder für 5 Sekunden in die Zwischenablage zu kopieren.
So kann man es benutzen, auch wenn jemand auf den Monitor schauen kann.

Das als kleine Anregung. Vielleicht findest du noch ein paar Ideen unter dem o.g. Link.

Gruß,
TriB

11.08.2011 - 11:31 Uhr

Hallo shacknet,

natürlich sind die Möglichkeiten, so wie die Preissegmente nahezu unbegrenzt.
Mit eine fertigen Anlage von z.B. Giera, kann man geschmeidig mal auf 10-15.000€ kommen.
Um das alles selbst realisieren zu können gibt es nun ebenfalls die High-End und die Low-Budget Variante:
Highend sind Bausteine, die über das Stromnetz gesteuert werden können (Ähnlich dem D-LAN Prinzip). Somit entfällt das verlegen von zusätzlichen Kabeln.
Allerdings müssten dann auch alle Lichtschalter und elektrische Rollädenmotoren ausgetauscht oder modifiziert werden.
Obwohl ich gerade sehe, so teuer ist das alles garnicht mehr!!! Haussteuerung VMAN

Die Low-Budget Variante wären Funksteckdosen. Diese unterliegen meist einem 433Mhz Standard, den man einfach mit einem Microcontroller nachahmen kann. Mit 2-3 Dreierpacks kann man schon einiges anstellen. Mit Vorkenntnis in Elektrotechnik und Hausstrom, lassen diese sich auch leicht zu Lichtschaltern modifizieren.
Für den Microcontroller gibt es Ethernet/W-Lan/Bluetooth-Module, die dann eine Steuerung von beliebigen Geräten erlauben.
Funksteckdosen 3er Pack = 20€
µC = 20€
Ethernet Shield = 35€

Gruß,
TriB

22.07.2011 - 14:24 Uhr

Hallo zusammen,

auf einer Form habe ich drei Bereiche, die ich gerne hervorheben möchte.
Per Combobox kann ich nun Bereich1, Bereich2, Bereich3 & Alle auswählen.
Dazu hatte ich überlegt mit

this.ControlXY.Scale(new SizeF(sX, sY);)

Erst die entsprechenden Controls zu vergrößern. Das klappt auch.

Dann möchte ich automatisch zu den entsprechenden Controls scrollen.
Der Idealfall bleibt die Größe der Form wie sie ist, blendet keine Scrollbar ein und zeigt mir z.B: die Controls in der unteren rechten Ecke der Form an.

Allerdings bewegt sich die Anzeige der Form kein bisschen.

this.ScrollToControl(panelArea3);
this.AutoScrollPosition = new Point(200,300);

klappen beide leider nciht.

Wie kann ich die Form ohne Scrollbar zum scrollen zwingen?
Gibt es andere, elegantere Herangehensweisen um quasi einen Zoom auf einen Bereich der Form zu machen?

Gruß & schönes Wochenende,
TriB

18.07.2011 - 13:29 Uhr

Hallo progi123,

eine andere Möglichkeit, als einen Screenshot zu machen gibt es kaum.
Das halte ich auch als eine der vernünftigsten Methoden, da die Anpassungsmöglichkeiten in z.B. HTML- oder gar Textform noch unbegrenzter sind.

Einen Screenshot zu manipulieren gestaltet sich da schon etwas schwieriger. Das für einen geübten Menschen das in wenigen Minuten erledigt ist, steht außer Frage.
Deshalb kann ich mir gut vorstellen, das vor Gericht dieser Screenshot keinerlei Bestand hat.
Allerdings wird eine Beweisführung von der Polizei eher auf Aussagen der entsprechenden Personen gestützt, als auf einen einzelnen Beitrag im Thread.

Die Frage ist: Was möchtest du damit erreichen? In einer Diskussion kann der Screenshot bestimmt etwas erreichen und z.B. Aussagen klarstellen. Auch ein Beweis für die entsprechenden Admins kann ich mir gut vorstellen.
Ein Gericht würde sich darauf allein natürlich nicht verlassen.

Bei CSI könnte anhand der Metadaten und der kopierten Pixel natürlich sofort eine Manipulation entdeckt werden, jedoch wird Herr Horatio wahrscheinlich nicht von einem deutschen Gericht konsultiert werden 😁

11.07.2011 - 10:38 Uhr

GMail hat Werbung??? Noch nie welche gesehen ...

Zwar nutze ich selbst kein GMail und ich würde die Werbung dank AdBlock Plus eh nicht sehen. Allerdings steht in allen Berichten, das es so wäre.
Ggf. wir damit auch nur die Werbung gemeint, die generell eingeblendet wird und nicht unbedingt auf der Gmail-Seite selbst.

Dank der großen Verbreitung von google-analytics, weiß Google sowieso zu jeder Zeit wo du gerade bist und was du machst.
Das verknüpft mit dem google-Account und den Mails macht die Stasi perfekt 😉

Googles 'Gmail' schaltet Werbung entsprechend der E-Mail-Inhalte

11.07.2011 - 09:52 Uhr

Hallo Trekki1990,

in meinen Augen bist du bei dem Ansatz zu sehr darauf fixiert die nette WakeOnUSB Funktion zu nutzen.
Warum nicht gleich den Powerschalter mit dem Vibrationsalarm verbinden?
Das ist die "Gängige" Herangehensweise, die man immer wieder im Internet finden kann.
Sicherlich muss man das Handy auseinander nehmen und beim PC den Powerschalter modifizieren, aber alles in allem ist das eine recht einfache Sache. Und funktioniert mit allen Handy´s, die einen Vibrationsalarm unterstützen.

Viel Erfolg!

Gruß,
TriB

06.07.2011 - 14:39 Uhr

Hast du in deinen GoogleMail Settings auch IMAP (oder POP) aktiviert? Standardmäßig ist es nämlich aus.

POP3 ist im Gmail Konto auch aktiviert

Um mich kurz noch dem OT anzuschließen:
Google hat mit Docs den Trend gesetzt alle Office Dokumente online abzulegen. Natürlich sehen wir alle den Vorteil der absoluten Verfügbarkeit darin.
Da aber jetzt schon bei Gmail die Werbung auf die eMail-Inhalte abgeglichen wird, ist der nächste Schritt nicht weit entfernt.
MS ist ja bekannt auf Fremde Innovationen aufzusetzen, sofern diese sich A: durchgesetzt haben und B: Gewinnbringend sind. Beides ist mit Google Docs gelungen.

Es ist erschreckend, wie viele Firmen im Internet kostenfrei ihre Dienste anbieten. Wie jeder weiß arbeitet kein Unternehmen der Welt kostenlos. Ob nun ein Filehoster, eMail-Anbieter oder Smartphone-Spieleentwickler, jeder zieht sein Kapital aus den Informationen des Benutzers und vergoldet jedes Bit der Persönlichkeit.

06.07.2011 - 10:00 Uhr

Hi DeSchneller,

meine Idee wäre:

SELECT * 
FROM Table
WHERE ( NOT(Spalte = 0) OR(@DarfNichtNull = true))

Getestet und klappt...

Gruß,
TriB

[Edit] Da habe ich dN!3L´s Lösung wohl überlesen. Natürlich kommen beide auf das selbe Prinzip hinaus 😃

20.06.2011 - 09:18 Uhr

Hallo dimuwe,

das liegt nur an dem Parameter-Eingabefenster.
Wenn der Parameter im Code mit sog. "Multivalues" gefüllt wird funktioniert es. Genauso, wir du bereits mit IN ('123','456') herausgefunden hast.

Soweit ich das analysiert habe, liegt es daran, dass IN analog zu einem JOIN eine Art Tabelle verknüpft. Also mehrere Datensätze. Das Abfrageparameter-Fenster übergibt jedoch nur einen String. Anstelle von 123 & 456 wird nun '123,456' übergeben und das Ergebnis ist leer.

Gruß,
TriB

16.06.2011 - 17:42 Uhr

Hi,

also gerade für die ganzen Elektronikteile kann ich www.Pollin.de sehr empfehlen.
Dort kaufe ich auch mein Kram.
Z.B. gibt es ein Lichtschrankenpaar für 0,95€. Wenn man, wie ich dann 5 Stck davon bestellt, sieht man das es sich um ein 10er Pack handelt 😄

Dort findet man auch allerhand Taster, Schalter und Potis.

Du sagtest, du möchtest den um z.B. einen Laser erweitern. Daher ging ich davon aus, dass deine Koordinaten aus dem Programm kommen und nicht vom Plotter selbst.

Vielleicht schaust du dir einfach mal ein paar Projekte an, mit denen ähnliche Lösungen bereits auf Microcontrollerebene gelöst wurden:
Incredible $100 Arduino-Based CNC Machine

16.06.2011 - 15:41 Uhr

Hallo maniman2,

also ob ein Schalter ausreicht um ein ausreichend genaues Ergebnis zu bekommen, weiß ich nicht. Dazu kommt es auf die exakte Reproduzierbarkeit der Schritte des Motors an.
Sollte der nicht die entsprechende Genauigkeit vorweisen kann man auch wunderbar Lichtschranken benutzen. Die sind günstig (<10Cent pro Stck) und können dann alle paar cm die Position für eventuelle Korrekturen übermitteln.
Wie auch immer...

Programmatisch würde ich dann eine Funktion zur Justierung erstellen um alle Eckdaten des Plotters dynamisch zu füllen. (Schrittgröße, Position Anfang, Position Ende)
Das war es eigentlich schon. Sicherlich ist der programmatische Teil der kleinste und unkomplizierteste 😃

Gruß
TriB

15.06.2011 - 11:42 Uhr

Der Vorschlag von Ralf Westphal steht dem nicht entgegen. Ralf Westphal sagt ja gerade:

Er [der Kunde] weiß vom ersten Tag an, was es kostet. Es wird nie teurer.

Diese Aussage verstehe ich schlicht und ergreifend nicht.

Der Kern von Ralf´s Artikel ist, dass man keine verbindlichen Zeit- und Aufwandsschätzungen abgeben kann. => Klar, das erleben (wir) Entwickler jeden Tag.
Mal zahlen wir die verschätzte Differenz, mal der Kunde. Wenn das alles so schrecklich wäre wie Ralf beschreibt, wären alle SW-Unternehmen pleite.

Exerzieren wir das durch: Ein Kunde hat 10.000,- und möchte ein Textverarbeitungsprogramm.
Man kommuniziert seinen Stundensatz und fängt an. Nun sind die ersten 2.000€ verbraten.

Im wöchentlichen Report wird klar, das der Kunde MS Word erwartet, aber man gerade so ein Notepad abliefern kann.
Nun ist der Kunde sauer und steht vor dem selben Problem wie immer: Zahle ich jetzt mehr oder wage ich einen Neuanfang. Reicht mir der Funktionsumfang so aus? Repariere ich das Auto noch ein letztes Mal oder lohnt diese Investition nicht mehr?!?

Der entscheidende Vorteil für den Entwickler ist die Sicherheit, die mit dem System auf unserer Seite steht. Nach der klassischen Methode hätten wir eigentlich das Risiko.

Da nur leider der Markt die Regeln bestimmt und selten der Anbieter, denke ich nicht das dieses System rigeros durchführbar ist. (Außer man heißt Steve Jobs und hat die Gelddruckmaschine erfunden)

Persönlich nutze ich die Methoden nach Aufwand zu berechnen (Das geht aber nur mit eine Angabe des maximalen Zeit-/Kosten-rahmens) oder einem Festpreis.
Wenn ich mich zeitlich verkalkuliere habe ich einen schlechten Job bei der Planung gemacht. Ist der Kunde unzufrieden mit dem Ergebnis und erwartet einen anderen Funktionsumfang (kostenlos natürlich) dann habe ich bei der Spezifikation versagt.

Sicherlich gibt es etliche Beispiele, die nicht im Vorhinein planbar sind. Dazu muss man dann Machbarkeitsanalysen abstimmen um den unbekannten Faktor zu minimieren.
Oft verkalkuliert man sich. Aber immer in beide Richtungen 😃

08.06.2011 - 09:43 Uhr

Hallo binaryblob,

wenn Du in deinem Programm immer nur einen Datensatz ändern kannst, sollte es keine Probleme geben.
Jedoch ist es möglich z.B. direkt per SQL-Statement, mehrere Datensätze auf einmal zu ändern.
In diesem Falle wird nicht für X geänderte Datensätze X-mal dein Trigger ausgeführt, sondern exakt einmal mit X-Datensätzen in Inserted & Deleted.

Dann springt dein Code bei "RETURN" raus, obwohl ein nachfolgender Datensatz ein Rollback machen müsste...

07.06.2011 - 14:08 Uhr

Du meinst sowas wie Active Desktop bei Windows 98? Ja, das wär sehr innovativ ^^

Hehe, nein nicht ganz 😃

Kombiniere die Metro-Kacheln mit den iPhone Push-Nachrichten. Lass es nun wie ein Widget erscheinen. Leg dann noch interne Statusmeldungen oder Download-/Fortschritts-Balken darüber. Dann kommt es dem Ganzen schon näher.

Eine standardisierte Schnittstelle um Programme mit minimalem Ressourcenverbrauch im Hintergrund Informationen bündeln zu lassen. Nach einem Doppelklick startet dann wie gewohnt die Applikation mit dem vollen Funktionsumfang.

Wenn der Desktop und die Taskleiste schon revolutioniert werden sollen, sehe ich das als Möglichkeit an. Das Vorschau-Feature aus der Vista/Win7 Taskbar könnte dann mehrere geöffnete Instanzen des Programms darstellen.

Z.B. ist momentan Outlook ständig geöffnet. Warum zeigt es nicht neue Nachrichten und aktuelle Termine auf dem Desktop an und startet erst komplett, wenn ich die Informationen lesen will und es doppelt anklicke?

So grob stelle ich mir das Ziel mit der Metro-Oberfläche, kombiniert mit den alten Windows-Tugenden vor 😃

07.06.2011 - 12:00 Uhr

Mahlzeit zusammen,

Prinzipiell höre ich eine doch sehr negative Meinung aus den Kommentaren heraus.
Bei dem allerersten Video halte ich es eher wie bei den Conceptcars. Eine Demonstration des Möglichen, nicht der Serienfertigung.

MS steckt einen Haufen Geld in die "Intuitivisierung" (neues Jugendwort 2011 😁 ) und hat, wie bereits angesprochen mit den Ribbons den ersten Schritt gemacht.
Diese haben erst ein Erschrecken ausgelöst, mittlerweile findet sich aber keiner mehr in den verschachtelten Menüstrukturen von Excel ´03 & Co. zurecht.
(Außer vielen Frauen, die sich aufgrund einer abstrakteren Denkweise lieber an altbekannten Rastern orientieren, hat eine Studie gezeigt)

Für mich persönlich sehe ich als Nachteil, dass der Trend nun dahin geht, dem User das Denken und Know How abzunehmen. Prinzip Apple DropDox: Keiner weiß wie, aber sie funktioniert. Da bin ich anscheinend auch noch vom der alten Schule.

Ein zentraler Anlaufpunkt für Programme (und auch Programmierer) ist an sich eine gute Idee und fördert den Wettbewerb. Allerdings werden m.E. peut á peut die kostenlosen Tools verschwinden.

Was ich innovativ und praktisch fände, wäre eine Neuerung der Desktopicons zu interaktiven (meinetwegen HTML & JS) Anzeigen.
So kann man Updates, News oder Statusinformationen gleich einsehen um das Programm dann wiederum klassisch zu starten.
Sozusagen eine erweiterte Pushfunktion.

MS hat sich mit Phone 7 in meinen Augen ziemlich in die Nesseln gesetzt, da alle Business-Funktionen, für die Windows Mobile bekannt und beliebt waren außenvor gelassen wurden. Daher könnte ich mir leider schon vorstellen, dass der Gedanke bei Win8 eher an die Consumerfraktion gerichtet ist und nicht so sehr an die Poweruser.

Aber lassen wir uns überraschen wie viel von dem gezeigten weiter ausgereift wird und wie viel nur ein Konzept bleibt.

06.06.2011 - 14:46 Uhr

Letzteres. Der Username stammt von meinem eigenen FTP-Server. Dort brauche ich nur den reinen Namen und das PW.
Genau wie bei z.B. FireZilla oder 2Ftp.de.

06.06.2011 - 14:15 Uhr

Habe gerade mal meine alten Projekte durchforstet und dabei ein passendes gefunden:

 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(server + Path.GetFileName(fileList[i]));
request.Credentials = new NetworkCredential(login, password);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Proxy = null;
request.UseBinary = true;

try
{
     WebResponse response = request.GetResponse();                          
}
catch (Exception exp)
{
     MessageBox.Show(exp.ToString());
}

FileStream fs = new FileStream(fileList[i], FileMode.Open);
byte[] fileContents = new byte[fs.Length];
fs.Read(fileContents, 0, Convert.ToInt32(fs.Length));
fs.Flush();
fs.Close();

Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
request.Abort();

Gerade nochmal getestet und der Upload funktioniert prima durch den Firmenproxy 😃
Da ich aber keine dramatischen Unterschiede erkennen kann, könnte es evtl. an den Einstellungen des Proxys liegen? Vielleicht ist der Port 20/21 dicht oder so...

06.06.2011 - 13:06 Uhr

Hallo sneakers,

wenn du davon redest, dass ein Proxy vorhanden ist, du aber mit

request.Proxy = null;

eben diesen nicht mit angibst, kann es ja nicht funktionieren.
Schau dir dazu doch am besten mal die Proxy-Klasse an.

Informationen zu den Fehlercodes findest du in HTTP-Statuscode.

Gruß,
TriB

26.05.2011 - 08:40 Uhr

Guten Morgen zusammen,

schaut euch doch mal das iPhone an. Die Hälfte aller Apps sind nichts anderes als Webseiten in ein Haupt-Programm eingebunden.
So schlecht kann das Prinzip doch nicht sein 😉

Es ermöglicht Hobbyentwicklern einfaches, schnelles Design.
Und es könnte dann ggf. Platformübergreifend genutzt werden.
So ist, um beim Smartphone Beispiel zu bleiben, eine Portierung einer Oberfläche auf Android und WinPhone 8 in wenigen Klicks erledigt.

Für irgendein Handy gab es mal Apps, die nur in JS, HTML & CSS geschrieben wurden. Habe aber vergessen welches OS das ist.

Daher kann ich inflames2k Entscheidung nachvollziehen, nicht unbedingt auf WPF zu gehen, sondern mal neue Wege zu gehen 😃

13.05.2011 - 18:10 Uhr

Danke für eure Antworten.

Zur Präzisierung:
Wenn später im laufenden Betrieb Fehler innerhalb der einzelnen Module/Plugins auftreten, möchte ich aus dem Hauptprogramm einen Speicherort vorgeben, wo diese abgelegt werden. So wäre es möglich z.B. im Supportfall ein LOG zu übermitteln.

Da ich den Nutzer per Interface nicht zwingen kann, werde ich wohl eine Static Klasse für das Loggen aus dem Hauptprogramm initialisieren. Dann kann diese aus den Plugins angesprochen werden.

@herbivore: Das mit den MsgBoxen war schon auf das Event bezogen, nicht auf die Möglichkeit einer Übergabe von unterschiedlichen Parametern 😃

Schönes Wochenende!

13.05.2011 - 10:50 Uhr

Guten Tag zusammen,

seit einigen Tagen versuche ich ein Plugin-Programm auf die Beine zustellen, welches an Kollegen verteilt werden soll.
Diese müssen dazu natürlich von einem Interface ableiten.

Aufgabenstellung:
Anhand des Interfaces kann ich die Kollegen "zwingen" bestimmte Schnittstellen zu implementieren. Tritt jedoch ein Fehler auf, soll eine/die Nachricht an das Hauptprogramm weitergeleitet werden. Dort erfolgt die Verarbeitung, Speicherung & Ausgabe.

Zu dem Problem:
Eine Event in das Interface zu integrieren ist ja an sich kein Problem, jedoch zwingt das den User nicht ausreichend dies auch im Falle eines Fehler zu nutzen.
Weiterhin möchte ich gerne die MessageBox.Show-Funktionen nachbilden, also z.B:

MessageBox.Show("Fehler");
MessageBox.Show("Fehler","Überschrift");
MessageBox.Show("Fehler","Überschrift",MessageBox.Buttons.OK,...);

Das kann ich ja schwer mit einem Event nachbilden...

Wie kann ich am elegantesten vorgehen um aus den Plugins die Meldungen abzugeifen und zu verarbeiten?

Gruß,
TriB

PS.: Die Problematik ist nicht die "Kommunikation zwischen 2 Forms", sondern der Aufbau des Interfaces.

02.05.2011 - 13:12 Uhr

Hallo mo#,

das klingt nach einer interessanten Sache.
In dem IE sehe ich die Problematik, dass dieses Cache Verhalten nicht immer wie gewünscht funktionieren wird. Kommen die Bilder direkt aus der DB, weiß ich auch nicht ob ohne eine eindeutige URL die Zuordnung für das erneut geöffnete Bild gefunden werden kann.

Eine ImageList klingt daher erstmal vernünftiger. Jedoch "müllt" die gerne den RAM voll und erfordert daher eine Logik, Ressourcen auch wieder freizugeben.
Wahrscheinlich werden doch die Bilder sich nicht so häufig ändern, oder? Dann würde ich mir fast überlegen ob die Anwendung nicht einen "Tumbnail"-Ordner bekommen soll, wo eine physische Speicherung passiert.
Das würde ich aber abhängig von der Menge der zu übertragenen Bilder und der Speicherdauer entscheiden.

Gruß,
TriB

27.04.2011 - 11:24 Uhr

Das Problem ist wahrscheinlich, dass du ein Carriage Return & LineFeed mitsenden musst.
Die beiden "Zeilenumbruch"-Zeichen werden z.B. vom Hyperterminal automatisch mitgesendet.

Für einen Sniffer sehen die ausgehenden Befehle identisch aus, aber es passiert einfach nix. (Kenne ich leider nur zu gut 😉 )

Ansonsten kannst du versuchen den Handshake zu setzen und herumprobieren welcher Typus erwartet wird. (Das sieht man nämlich ebenfalls weder im HyperTerminal, noch bei den meisten Sniffern)

Gruß
TriB

EDIT: Wer lesen kann....
Also da du schon schreibst, dass es nur beim Mitlesen eine Antwort gibt, ist es definitiv der Handshake.

07.04.2011 - 11:50 Uhr

Nur des Anstands halber mal zwei klasse Links, die das Labyrinth-Problem beschreiben:
Labyrinth und Tiefensuche
Roboter im Labyrinth

07.04.2011 - 11:36 Uhr

Hallo Martinar,

du machst dort nichts falsch. Das ist die Logik des Designers.
Es ist ja schließlich möglich mehrere Controls von ein und dem selben Typ auf die Form zu ziehen.
Was, wenn nun alle den selben Namen hätten? Man könnte die Buttons nicht mehr unterscheiden.

Daher ist VisualStudio (und auch alle anderen Programme) so "schlau" und zieht den Namen des Control heran und nummeriert diesen laufend durch.

Nun ist es eine weitere Eigenheit, dass der Designer ebenfalls den Text anpasst, damit du gleich im Design erkennst um welches Control es sich handelt.

So viel zu dem Grund, eine Lösung habe ich aber leider nicht parat. Das wird wahrscheinlich eine Einstellung im VisualStudio sein.

Gruß,
TriB

28.03.2011 - 14:45 Uhr

Auf meinem Lappy braucht der IE 8 deutlich länger als der FF 3.x, bzw jetzt 4.0.
Ist "nur" ein Intel Core 2 duo T7700 mit 2,4GHz & 4 Gig RAM. (64Bit)
FF mit zahlreichen Addons, wie *Fire Gestures *lazarus FormRecovery *NoScript *AdBlock Plus *FoxyProxy

benötigt 2,5 Sek

Der standard belassene IE 4-5 Sek.

28.03.2011 - 11:33 Uhr

Hallo zusammen,

es gibt mittlerweile einige Festplatten, die einen Netzwerkanschluss besitzen und ein Web Interface bereitstellen. Bzw. den Zugriff per FTP.
Zusätzlich werden immer mehr Router mit einem USB-Anschluss ausgerüstet, die dann ebenfalls die Funktionen für eine externe Festplatte übernehmen.

Zwar ist dann die Upload-Geschwindigkeit deutlich geringer als bei der Dropbox, dafür hat man die Daten Zuhause.

Meine Iomega HDD braucht im Jahr ca. für 15€ Strom und stellt ein Web Interface, FTP und einen DLNA-Server zur Verfügung.

Es läuft bei der Anmeldung ein kleines C# Programm, welches dann z.B. die FireFox Lesezeichen, ToDo-Listen oder Config/Settings-Dateien von Programmen per FTP synchronisiert.
Größere Datenabgleiche (VS-Projekte, usw.) stoße ich dann aber manuell an.

Ist sicher nicht so elegant, funktioniert aber genau so wie ich mir das vorstelle 😃

21.03.2011 - 12:05 Uhr

Dann sollte es aber mit dem Gruppenfilter (Rechte Maustaste auf den Gruppenrand->Zeilengruppe->Eigenschaften->Filter):

Fields!NOTE.Value
<>
""

Funktionieren. Vielleicht bis du mit dem Filter nur auf der falschen Gruppe/Ebene der Tabelle?

Der Vorteil des Filters gegenüber z.B. der Visible-Eigenschaft ist, dass die Werte dann in Summen nicht mit einbezogen werden.

18.03.2011 - 10:01 Uhr

Guten Morgen spidermike,

es ist genau so wie FZelle es beschreibt. Ein *.rdlc Report bekommt ein fertiges Dataset und du kannst dieses quasi nur noch Designen.
Zum Hintergrund sollte man wissen, das dieses Dataset immer aus einer Tabelle besteht.
Da aber der Datenstamm (der dafür die Grundlage bildet) meist aus mehreren Tabellen zusammengesetzt wird, gibt es Redundanzen und/oder leere Felder.

Also ist erstmal fraglich wie korrekt deine Daten im Hintergrund sind und ob du einfach die leeren Felder ausblenden kannst ohne restliche Ergebnisse negativ zu beeinflussen.

Ansonsten funktioniert nicht der Filter:
Fields!NOTE.Value
<>
""

02.03.2011 - 12:54 Uhr

Zu dem letzten Vorschlag von herbivore eignet sich wunderbar die Standardfunktionalität der Textbox.
Im Designer unter "Sonstiges" findet man 3 Properties für die AutoComplete-Funktion.

Dort gibt man eine Auflistung mit oder eine DataSource. Ob dann nur Vorschläge angezeigt werden oder der Rest angefügt (Vervollständigt wird) ist parametrisierbar.

Am Besten einfach mal anschauen und dann entscheiden ob man damit schon leben kann 😃

Gruß,
TriB

01.02.2011 - 15:15 Uhr

Hallo VisionMaster77,

Also eine Dependency halte ich für den Anwendungszweck für ungeeignet.
Denn es müsste jeder der User/jede Session eine eigene Dependency erstellen und bringt damit wahrscheinlich den Server schnell zum erliegen.

Vernünftig ist es selbst ein Interval festzulegen, welches die Seite aktualisiert. Kein Mensch kann sonst erkennen, wenn sich 5x in der Sekunde ein Wert ändert.

Nun wäre es interessant, innerhalb des Intervals zu prüfen ob überhaupt eine Aktualisierung vorgenommen werden muss. Entweder löst man das über eine View oder setzt irgendwo ein Flag wann die letzte Änderung von Statten gegangen ist.

Gruß,
TriB

14.01.2011 - 14:22 Uhr

Das könnte gut mit der Browserauswahl von einem der letzten Updates zusammenhängen. Auch wenn man bei den Updates den Haken entfernt hat, wurde bei mir eine Verknüpfung zur Browserauswahl auf den Desktop gelegt und in der Schnellstartleiste war der Internet Explorer weg.

Ob Links direkt geöffnet werden können habe ich noch nicht ausprobiert, da ich meist den IE als Standard-Browser habe, aber den FF nutze. Daher immer C&P
(Hat unter anderem den Vorteil, das man sich seine Tabs nicht zerschießt, wenn man irgendeine Datei oder einen Link öffnet)

Werde ich gleich Zuhaus mal kontrollieren 😃

14.01.2011 - 13:06 Uhr

Hallo Spleen,

wenn du weißt wie man eine Beziehung angibt, dann hast du ja schon automatisch eine 1:1 Beziehung geschaffen. Bei 1:n & n:1 muss man explizit das "JOIN" um ein LEFT oder RIGHT OUTER JOIN erweitern.

Dies ist eine der Grundlegensten Funktionen von SQL. Da hier im Forum ein paar gewisse Grundkenntnisse vorausgesetzt werden, empfehle ich dir dich erstmal mit den Grundlagen auseinander zu setzten.
z.B. hier:
http://de.wikipedia.org/wiki/SQL#Sprachelemente_und_Beispiele

Gruß
TriB

11.01.2011 - 10:24 Uhr

Guten Morgen zusammen,

seit längerem nutze ich die Standard Installer von VS'05 & '08.
Oft erstelle ich DLL´s die einem bestimmten Interface mit Strongname entsprechen müssen. Genau das funktioniert nicht mehr.
Ein manuelles Registrieren per Batch ist problemlos möglich.

Es erscheint die Meldung:
"Microsoft Visual Studio registry capture utility funktioniert nicht mehr"

Stelle ich die Primäre Ausgabe meines Projektes auf Register: COMSelfReg kann ich die MSI erstellen, jedoch beim Installieren tritt ein Fehler auf. (Es gibt nur einen Fehlercode, der bei Google nichts gebracht hat. Liefer ich aber gerne auf Anfrage nach 😃 )

Das Interface sieht wie folgt aus:

namespace SerialPortCom
{
    //Eventcontrol
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IAutomationEvents
    {
        [DispId(1)]
        void ComPortEvent(string ReturnValue, int info);
    }

    //Control AutomationServer
    public interface IAutomation
    {
        void StartConnection();
        void StopConnection();
        void SendCommand(string command);        
        [...]
    }

//Eventcontrol
    public delegate void ComPortEventDelegate(string ReturnValue, int info);   

    //Automation Server Class
    [ComSourceInterfaces("SerialPortCom.IAutomationEvents"), ClassInterface(ClassInterfaceType.None)]
    public class Automation : IAutomation
    {
        //Event
        public event ComPortEventDelegate ComPortEvent;
        [...]
    }

Danach folgen noch die Funktionen für den ComPort und dessen Eigenschaften.

Kennt zufällig Jemand das Problem oder hat einen Ansatz woran es liegen könnte dass das Installationspaket nicht erstellt werden kann?

Gruß
TriB

07.01.2011 - 14:24 Uhr

Genau, SAP hat doch bestimmt eine Einrichtung für die Webservices. Oder zumindest eine Konfigurationsdatei. Dort kann man das dann zwar hochsetzen, der Nachteil ist aber, das dann auch die User länger angemeldet bleiben und ggf. Sessions sperren.

Je nach deinem Programm ist es evtl. Sinnvoll in einem Thread einfach den Webservice während dem Start einmal "anzupingen". Wird dann manuell die Abfrage gestartet ist die Authentifizierung schon gelaufen.

07.01.2011 - 09:25 Uhr

Guten Morgen punkdevil,

zwar sind laut Definition die Webservices "Zustandslos" und es gibt keine dauerhafte Verbindung zwischen WS und Abonnent. Dies ist so aber nicht korrekt. Es wird bei der ersten Verbindung ein Handshake gemacht, die Authentifizierung abgehandelt, usw. Dies benötigt etwas Zeit. Die weiteren Aufrufe laufen dann über die Bestehende Verbindung und sind dementsprechend deutlich schneller.
Nach 15 Sekunden ist dann der Verbindungs Timeout abgelaufen und der Client muss sich neu verbinden.

In dem Webservice kann man i.d.R. den Timeout konfigurieren.

Gruß,
TriB

11.11.2010 - 10:29 Uhr

Hi,

eventuell kannst du auch über den Akku gehen. Den sollte ein Desktop PC schließlich nicht haben.

PowerStatus ps = SystemInformation.PowerStatus;
MessageBox.Show(ps.PowerLineStatus);

Bzw. wie du schon sagst, wird eine Kombination aus mehreren Prüfungen sinnvoll sein.

Gruß
TriB

04.11.2010 - 13:42 Uhr

Abgesehen davon sollte diese Einstellung mit der "Hohen Geschwindigkeit" bei einem OS unter Win7 ausgeschaltet sein.

BTW: Kann man Active Sync nicht unter Vista nachinstallieren? Unter Win7 funktioniert diese Synchronisierungs Partnerschaften-Dingens auch nur unter Professional vernünftig...

03.11.2010 - 09:58 Uhr

Hallo zusammen,

das war einfach ein Politisches-Sommerloch was diese Diskussion ausgelöst hat. Und die anscheinend typisch Deutsche Auffassung von solchen Dingen. Unwissenheit gepaart mit neuer Technik aus diesem Internetz...

Den Vergleich Payback (die Übersetzung sagt schon alles: Rache) und GSV finde ich schon ziemlich gut. Bei Payback sehen alle nur durch die rosa Brille die tollen Preise und Rabattaktionen. Datenverkauf/missbrauch wird übersehen oder totgeschwiegen.

Bei GSV ist es dann genau umgekehrt. Die Vorzüge liegen, denke ich auf der Hand. Die Nachteile werden ständig diskutiert.

Prinzipiell war ich ein Beführworter, da ich die Aufnahmen von meiner Wohnung oder dem Elterlichen Haus allein als unkritisch betrachte.
Das Ganze hat sich nun aber nach mehreren Berichten etwas gewandelt. Google hat WLans gescannt, Postfächer durchwühlt, ect. Das heißt: zu ihrem sicherlich schon umfangreichem Profil über unser Such-, Email und SN-Verhalten kommt nun noch Wohnort, Stadtteil und Wohnsituation dazu.

Das ist natürlich der absolute Super GAU. Alle Versprechungen "Das war ein Versehen, wir löschen natürlich alle Daten" grenzt ja schon an einer Märchenstunde.

Demnächst in Ihrem Briefkasten: Maßgeschneiderte Werbung von Google...

18.10.2010 - 09:44 Uhr

Hi maxwell86,

ujr hat vollkommen Recht. Die Fähigkeiten der Seriellen Schnittstelle des Arduinos sind sehr begrenzt.
Prinzipiell waren diese auch nur zum beschreiben des Microcontrollers angedacht und können daher nicht viel mehr als senden und empfangen

Also musst du selbst tätig werden und ein sog. Zeilenendzeichen definieren.

comPort.NewLine

bzw. "per Hand" im DataReceived prüfen.
Es empfiehlt sich eins der vorderen ASCII-Zeichen, die in normalem Text nicht vorkommen.
(03 wäre lt. definition schonmal sehr gut)

Das erinnert mich daran auch mal weiter an meinem Controller zu "schrauben"... 😉

24.09.2010 - 08:46 Uhr

Guten Morgen geali_dor,

das ist korrekt. So werden die Items auch gespeichert.

Klickt man nun auf den Button passiert aber nichts.

        protected override void OnClick(EventArgs e)
        {            
            this.ContextMenuStrip.Show(this,new System.Drawing.Point(0,this.Height));            
            //Menu.Show(this,new System.Drawing.Point(0,this.Height));
            base.OnClick(e);
        }

Füge ich jedoch in der Hauptform per Code die Items hinzu funktioniert es:

           MenuBtn.ContextMenuStrip.Items.Add("Item1", null, TestOnClick);
            MenuBtn.ContextMenuStrip.Items.Add("Item2", null, TestOnClick);

Hab gestern einen Haufen Controls gebaut, die alle wunderbar funktionieren. Das weigert sich einfach 😁

23.09.2010 - 14:01 Uhr

Hallo zusammen,

was sich so einfach anhört stellt sich als komplizierter dar als erwartet.

Eigentlich möchte ich nichts anderes als einen eigenen Button erstellen, welcher bereits ein ContextMenuStrip zugewiesen hat und welches später im Designer zugreifbar ist.

Dazu habe ich einmal dem ContextMenuStrip des Buttons im ctor ein von außen zugreifbares CMS zugewiesen.


        public ContextMenuStrip Menu = new ContextMenuStrip();//{ get; set; }

        public MenuButton()
        {
            this.ContextMenuStrip = this.Menu;            
        }

Dies war zugreifbar, jedoch speichert es sich keine vom Designer zugewiesene Items.
5 Items hinzugefügt, kompiliert, wieder in den Designer und es ist wieder leer.

Überschreibe ich das CMS des Buttons und liefer dort mein CMS zurück klappt dies ebenfalls nicht.

        public override ContextMenuStrip ContextMenuStrip
        {
            get
            {
                return this.contextMenuStrip1;
            }
            set
            {
                base.ContextMenuStrip = this.contextMenuStrip1;
            }
        }

Es zeigt im Designer unter ContextmenuStrip einfach nichts an.

Idealer Weise hätte ich natürlich gerne auch die Möglichkeit später im Designer "per Maus" die Items hinzuzufügen. Leite ich dann generell besser von CMS ab und frickel dort irgendwie den Button hinein?

Stehe da gerade total auf dem Schlauch 8o

Gruß,
TriB

20.09.2010 - 14:29 Uhr

Hallo Sclot,

es gibt die Möglichkeit per WMI die Fenster-Handle in einer Schleife durch zu gehen und dir Position sowie Größe zu speichern.
Jedoch musst du aufpassen, das du nicht Systemfenster o.Ä. erwischst die dann nicht gesetzt werden können.

Ggf. würde ich über alle Tasks gehen und daher dann die Fenster beziehen...

Recht interessante Sachen, die dich sicherlich weiterbringen werden findest du hier:
FindWindow()-Fenster über Prozessname Finden
Konsolen-Anwendung - Fenster positionieren

Gruß
TriB