Laden...

Forenbeiträge von GMLOD Ingesamt 1.200 Beiträge

25.09.2008 - 23:17 Uhr
  
public override void FormA_Load(...)  
  

Gruß David

Dafür muss er aber FormA_Load in der Basisklasse als virtual deklarieren:

public virtual void FormA_Load(object sender, EventArgs e)
        {
            textBox1.Text = "Load Ereignis von Form A";
        }

Sonst geht da gar nix.

25.09.2008 - 19:30 Uhr

Sowas steht allerhöchstens im Assembly Manifest (da kommst du glaub ich über Reflection ran).

Ich bezweifle aber, dass dort ein Timestamp für das Kompilierdatum angelegt wird.

25.09.2008 - 17:13 Uhr

Dann append halt Leerzeichen bis du die gewünschte Länge hast.

Das sind allerdings Grundlagen, die du bereits haben solltest.

[Hinweis] Wie poste ich richtig?

25.09.2008 - 17:09 Uhr

Dann füg noch Leerzeichen oder Tabstops ein:

tw.WriteLine(Tei + "\t" +anf + "\t" + Men + "\t" + anf + "\t" + Lfd);
25.09.2008 - 17:06 Uhr

Da hast Recht. Wobei man erstmal so faul wie antoschka sein muss 😁

25.09.2008 - 17:03 Uhr

Hä? Warum nicht

string2 += string1;

?

25.09.2008 - 15:30 Uhr

Da die Authentifizierung so stattfindet wie hier beschrieben, wäre es recht einfach, die nötigen Header beim HttpRequest mitzugeben.

25.09.2008 - 10:24 Uhr

Bei MySQL muss man laut Manual aber noch

insertCommand.Prepare();

aufrufen.

25.09.2008 - 09:49 Uhr

Bei MySQL hab ich für die Parameter immer nur "?" verwendet und keine Namen vergeben, das war aber über ODBC. Ich weiss, dass das auch bei OleDB Probleme macht.

Probiers mal mit dem "@" Zeichen. So stehts auch im C# Samples hier.

24.09.2008 - 17:51 Uhr

Ich frag mich ja, wie du überhaupt den ersten Query hinbekommen hast. Was du willst ist trivial und du kennst die Antwort bereits. Es sei denn, du hast den obigen Query irgendwo abgeschaut und nicht verstanden.

24.09.2008 - 16:02 Uhr

Hast du deine FKs/Relationen auch im DataSet definiert? Mit den richtigen Rules? Für die neue Spalte (DataGridViewComboBoxColumn) musst du denke ich auch noch den DataPropertyName, Display und Value Member richtig setzen.

24.09.2008 - 15:42 Uhr

Left join von Tabelle 3 auf Tabelle 2 über TD_MARKE.

Sieht ausserdem falsch designed aus. Welche Relation besteht zwischen Marke und Version? 1:1, 1:n oder was?

Ich persönlich würde Kataloge mit ihren eigenen IDs für Namen, Marken und Versionen anlegen und diese dann in einer anderen Tabelle miteinander verknüpfen. Wie genau hängt allerdings von den Relationen ab. Beschreib das doch mal.

24.09.2008 - 14:33 Uhr

Würde mal drauf tippen, dass dieses Verhalten durch den Wechsel von MessageBox zu Form verursacht wird.

Könntest ja ganz simpel einen boolean setzen den du nach dem ersten mal auf true setzt und dann abfrägst.

24.09.2008 - 14:24 Uhr

Könntest das ja in EventHandlern zu CurrentChanged oder PositionChanged abfragen.

MSDN: BindingSource Members

24.09.2008 - 14:20 Uhr

Mir scheint da hast du dich ein wenig vertan.

Drop deinen Constraint nochmal und führe das aus:

ALTER TABLE dbo.leiht 
ADD CONSTRAINT fk_leiht_Mitarbeiter 
FOREIGN KEY (id_Mitarbeiter) 
REFERENCES dbo.mitarbeiter (id_Mitarbeiter) ON DELETE CASCADE

(Pass natürlich die Bezeichner noch an).

24.09.2008 - 13:47 Uhr

Meine Kristallkugel sagt mir, dass der Dateiname irgendwo anders überschrieben wird oder einfach leer ist.

24.09.2008 - 13:40 Uhr

Stichwort: ForeignKeys.

Du musst die DeleteRule für deinen ForeignKey dann auf "Cascade" stellen. Tigger sind für so eine simple Aufgabe unnötig.

Ausserdem gewährleistest du mit Foreign Keys referentielle Integrität.

24.09.2008 - 13:38 Uhr

Du musst das Bild erst in ein byte[] konvertieren. Das wird übrigens auch in dem Snippet getan, das ich gelinkt habe.

Hier nochmal ein Link zur Serialisierung:

Bild zu byte[]

MemoryStream memStream1 = new MemoryStream();

            BinaryFormatter formatter = new BinaryFormatter();

            formatter.Serialize(memStream1, deinBild);

            byte [] bytes = memStream1.GetBuffer();

            memStream1.Close();

und wieder zurück:

 MemoryStream memStream2 = new MemoryStream(bytes);

            DeinBildTyp deinBild = (DeinBildTyp)formatter.Deserialize(memStream2);
24.09.2008 - 13:19 Uhr

In der MSSQL Tabelle ist das Feld vom Typ IMAGE

@Kubi
Das erklärt wohl alles.

24.09.2008 - 12:58 Uhr

Ein Bild wirst du nicht als String übergeben können. Nimm ein byte[] dafür und übergeb den Parameter als SqlType.Image.

Dafür musst du aber dein Bild-Objekt serialisieren, wie das geht findest du sicher über Google und die Forensuche.

Ausserdem hab ich dir hier noch schnell ein Snippet rausgesucht, das exakt beschreibt wies geht: http://www.primaryobjects.com/CMS/Article59.aspx.

24.09.2008 - 12:16 Uhr

Natürlich hast den. Einfach die benötigte Dll einbinden.

Gut, ich hab aber meine Zweifel, ob das mit ASP.NET funktioniert.

24.09.2008 - 11:32 Uhr

z.B.

int i = 5;
aTextBox.DataBindings.Add("Text", i, null);

Oder gleich über die Binding-Klasse gehen und diese hinzufügen.

24.09.2008 - 10:44 Uhr

Ich setz immer gerne den FormFreezer ein, da ich ab und an auch dem Flackern nie ganz Herr geworden bin.

Vielleicht baust du den ein wenig um und setzt ihn ein.

24.09.2008 - 09:28 Uhr

Die Statements werden komplett zur Datenbank geleitet und dort ausgeführt. Erst ein Commit oder ein Rollback veranlasst die Datenbank die Dinge, die während der Ausführung geschehen sind, dann zu persistieren oder zu verwerfen.

Dein Programm wartet so lange, bis die Aufgaben durchgeführt wurden. Ob ein Commit oder ein Rollback irgendwann später stattfindet, interessiert erstmal nicht.

Die beste Lösung für dein Problem ist eine Mischung aus Transaktionen in Stored Procedures, Scheduling (sowas wie dbms_job unter Oracle) und Locking (damit sich zwei Procedures nicht in die Quere kommen).

24.09.2008 - 07:58 Uhr
string wert = string.Format("\\x{0}",35);
            MessageBox.Show(wert);

Gibt aus: \x35.

So sollte es auch sein. Der Fehler muss an anderer Stelle liegen.

24.09.2008 - 07:42 Uhr

Hast du das wirklich ausprobiert?

Das glaub ich jetzt erstmal gar nicht. Probiers mal aus.

string wert = string.Format("\\x{0}",var);
24.09.2008 - 07:06 Uhr

Du musst den "" escapen.

Schreib "\x" + var.

Das sollte zum gewünschten String führen.

24.09.2008 - 06:10 Uhr

http://www.pinvoke.net/default.aspx/kernel32/ReadProcessMemory.html
http://www.pinvoke.net/default.aspx/kernel32/WriteProcessMemory.html

Hier haste die Signaturen der Funktionen, die kannst du dann ganz "normal" von deinem C# aus verwenden.

Vielleicht suchst du dir noch ein Tutorial zu den System.Runtime.InteropServices. An einen ProcessHandle solltest du auch über die System.Diagnostics.Process Klasse herankommen.

23.09.2008 - 16:40 Uhr

Aber MDX liegt im Sterben. Das sollte keiner mehr anfangen.

23.09.2008 - 13:25 Uhr

Wenn der User das per Copy & Paste macht, muss er halt noch zusätzlich das Format spezifizieren.

Oder die Elemente direkt in Textfelder kopieren.

23.09.2008 - 12:14 Uhr

Ich würde mich auf ein Standard Format beschränken, oder aber das Format vor dem Spoolin angeben. Dass zwei verschiedene Formate im selben Datensatz auftauchen, halte ich für unwahrscheinlich.

Du könntest aber auch ein neuronales Netz implementieren und trainieren, das die Erkennung übernimmt.

23.09.2008 - 12:00 Uhr

also XNA ist müll.

Ich möchte anmerken, dass ich hier gänzlich anderer Meinung bin. Der Eintrag ist ja auch schon ein Jahr alt. XNA simplifiziert vieles und ist absolut ausreichend für die Tasks, für die ich es bisher gebraucht habe. Gerade im 2D Bereich lässt XNA kaum Wünsche offen. SDL und Konsorten sind hier wesentlich komplizierter und die C#-Bindings afaik kaum ausgereift, bzw. schlecht.

22.09.2008 - 16:29 Uhr

Was? Wenn die Werte eh statisch sind kannst sie ja einfach IRGENDWO reinschreiben, z.B. in eine ComboBox. Und zwar kannste dann auch nur die Werte da reinschreiben, die du dem Nutzer auch zugänglich machen willst.

22.09.2008 - 16:25 Uhr

Ja, warum dann nicht einfach eine where-clause mit Parameter angeben für den Select vom TableAdapter?

Den Parameter kannst ja dann von einer beliebigen Quelle aus setzen. Z.B. von einer ComboBox aus oder aus einem Config-File.

22.09.2008 - 16:10 Uhr

Warum würdest man sowas tun sollen? Hol dir halt einfach alle 3 Columns und stell dann im Programm nur eine da.

22.09.2008 - 16:05 Uhr

Probier mal XNA aus mit deinem VS2008. Das ist the way to go imho.

22.09.2008 - 13:57 Uhr

Welche dotnet Version? LINQ wäre optimal für das, was du erreichen willst.

Ansonsten könntest auch einfach über die Liste iterieren und gucken, ob die Person schon drin ist. Dies wäre allerdings über ein Predicate schöner gelöst. Du brauchst ja quasi ein Predicate(Person p), da könntest du dann über die Find Methoden nach dem Namen suchen. Oder nach beliebigen Inhalten.

22.09.2008 - 13:52 Uhr

Wenns wirklich nur 2 Elemente sind, die entfernt werden sollen, warum dann nicht REPLACE nutzen, wobei du die Kleinbuchstaben einfach durch gar nichts ersetzt.

22.09.2008 - 11:42 Uhr

Ich hab den Thread nicht ganz gelesen, aber:

Wie wäre es denn mit der HitTest zu arbeiten um die darunter liegende Zeile rauszufinden und die zumindest zu selektieren? Dann würde mit dem neuen Klick die DataGridView startklar gemacht und gleichzeitig der Select stattfinden.

20.09.2008 - 13:45 Uhr

Ja, prinzipiell ist das was du darunter verstehst schon richtig. Ich hab mich nur an dem Ausdruck "Members" ein wenig gestört, das z.B. Attribute auch Members sind, weswegen ich dann eher auf abstrakte Klasse getippt hätte (Interfaces und abstrakte Klassen sind sich teilweise recht ähnlich).

Ausserdem musst du den TypeConverter überschreiben um die "Sicht" auf das Objekt, die das Interface implementiert einzuschränken.

20.09.2008 - 12:36 Uhr

immer wieder beeindruckend was manche Entwickler in ihrer Freizeit auf die Beine stellen. Klasse 👍

Ich möchte erstmal Source Code sehen

20.09.2008 - 12:28 Uhr

Eine Schnittstelle ist keine Sicht auf eine Klasse. Sie beschreibt nur wie man mit einem Objekt, dass diese Schnitstelle "besitzt" interagieren kann.

Dein Verständniss nennt man "abstrakte Klasse".

Da eine Schnittstelle an sich kein Obekt ist - es gibt nur Objekte die diese Schnittstelle haben - kann sie so natürlich auch nicht ans PropertyGrid gebunden werden, da dieses wohl ein Objekt erwartet. Und dieses Objekt kann nunmal auch noch ganz andere Properties besitzen.

20.09.2008 - 01:17 Uhr

Da würde ich am besten eine Scriptsprache samt Interpreter einbauen. LUA z.B.

19.09.2008 - 14:28 Uhr

Der Serializer weiss halt nicht, welche Liste er serialisieren soll, weil du nur ein Interface als Member angegeben hast, würde ich mal denken.

Ersetz doch einfach mal IList<T> durch z.B. List<T>

19.09.2008 - 12:38 Uhr

Hallo, Loewchen0507!

Zunächst mal brauchst du ein Salt. Ein Salt ist ein beliebiger Wert (beliebiger String), den man mit dem Passwort konkateniert, um es sicherer zu machen. Es ist ganz ok, dafür die Systemzeit zu nehmen. Beachte nur, dass der String mindestens 10 und maximal 50 Zeichen haben muss.

Dann brauchst du eine Methode, die dir für einen String ein SHA1 Hash erstellt. Siehe auch diesen Link hier oder besser noch diesen.

Dein auth string muss dann so aussehen:


string salz = "beliebig1234567890";
string auth = salz + SHA1StringHash(salz + passphrase) + customerkey;

Dann klappts auch mit dem Login.

19.09.2008 - 11:54 Uhr
string auth = Systemtime + "&SHA1(" + Systemtime + "&" + passphrase + ")&" + customerkey;

Ähm, ist dir bewusst, dass die da wahrscheinlich ein SHA1-Hash haben wollen? Nicht einen String der mit SHA1 beginnt?

Poste doch mal die Spezifikation vom Auth-String.

19.09.2008 - 10:17 Uhr

Hallo, Loewchen0507!

Prinzipiell baust du erstmal Proxyklassen über ein mit dotnet mitgeliefertes Tool (aus der WSDL Datei, diese kannst du z.B. abrufen indem du an deine Webservice Url ein ?wsdl anhängst iirc).

Die Proxyklassen nehmen dir dann die ganze Kommunikation ab und du musst nur noch deine Logik einbauen.

Der Codeprojectartikel hier sollte dir weiterhelfen: http://www.codeproject.com/KB/cpp/bwcswebservicearticle.aspx

19.09.2008 - 09:45 Uhr

Hi!

Was bedeutet "bei externer Datenquelle"? Bei Verwendung von DataAdapter.Fill()?
Täte mich wundern, wenn das überhaupt ginge, einen Datensatz einzulesen, der gegen die Unique-Constraint verstößt.

Im DataSet kannst du zumindest EnforceConstraints auf False setzen.

Zum DataError:
Was betrachtest du als fehlerverursachende Zelle? Die Zelle die gerade aktiv ist verstößt gegen den Constraint und ist imho der Verursacher. Du könntest auf den ValueChange von so einer Zelle allerdings alle anderen Zellen, die dann den Constraint verletzen umsetzen.

Du verstehst das irgendwie falsch, denke ich. Sobald der Constraint nach einer Eingabe verletzt wird, kommt der DataError.