Weils gerade passt:
An der Uni hatten wir mal .NET als Freifach. Dabei sind wir auch auf das Thema der Decompilierung gekommen. Der Vorlesende (Mitarbeiter von MS) meinte dazu, dass Sie es mal mit einer Hackergruppe zu tun hatten die in 3 Jahren Arbeit Windows (weiß jetzt nicht mehr ob es 2000 oder XP war) "decompilierten".
Und die Moral von der Geschicht:
Wenn jemand das benötigte Know-How hat, das ist es nur eine Frage der Zeit.
Hab auch wiedermal was tolles beim durchforsten von Code in der Firma gefunden:
public new void Hide()
{
base.Hide();
}
Denke mal folgendes hilft weiter:
Zuerst war das Array:
Allerdings hat dieses den Nachteil das es von fixer Größe ist.
Dann kam die ArrayList:
Ist dynamisch in der Größe. Hat ein object[] im Hintergrund und hat folgende Probleme:
Dann kammen Generics: (z.B. List<T>)
Hier gibt man per Typparameter (das T in List<T>) an welche Daten gespeichert werden. Im Hintergrund hast du ein T[]. Somit
Habs auch mal probiert.
Bekomm bei der 2ten Datei folgende Fehlermeldung:
Fehlermeldung:
Unbehandelte Ausnahme: System.IO.IOException: Der Prozess kann nicht auf die Dat
ei "C:\test\Neues Textdokument2.txt" zugreifen, da sie von einem anderen Prozess
verwendet wird.
bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
bei System.IO.FileStream.Init(String path, FileMode mode, FileAccess access,
Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions
options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boole
an useLongPath)
bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access,
FileShare share, Int32 bufferSize, FileOptions options)
bei System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean dete
ctEncodingFromByteOrderMarks, Int32 bufferSize)
bei System.IO.StreamReader..ctor(String path)
bei ConsoleApplication1.Program.Worker.CreateFile(Object sender, FileSystemEv
entArgs e) in c:\users\dominik.bos\documents\visual studio 2010\Projects\Console
Application1\ConsoleApplication1\Program.cs:Zeile 57.
bei System.IO.FileSystemEventHandler.Invoke(Object sender, FileSystemEventArg
s e)
bei System.IO.FileSystemWatcher.OnCreated(FileSystemEventArgs e)
bei System.IO.FileSystemWatcher.NotifyFileSystemEventArgs(Int32 action, Strin
g name)
bei System.IO.FileSystemWatcher.CompletionStatusChanged(UInt32 errorCode, UIn
t32 numBytes, NativeOverlapped* overlappedPointer)
bei System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32
errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
Hoffe es hilft
OK,
Vermutlich ist es nicht möglich (Wenn man das Beispiel oben nochmal betrachtet), dass man einfach aus dem DataSet die Tabelle auf das Datagrid zieht und dann unter "Spalten bearbeiten" die Spalten der anderen Tabellen hinzuzufügen.
Kann mir diese Vermutung jemand bestätigen oder wiederlegen?
Lg
Tom
Es bräuchte nichtmal bearbeitbar sein
verwendetes Datenbanksystem: SQL-Server 2008
Hallo Community,
Gibt es eine schöne Möglichkeit wie man Spalten mehrerer verknüpfter Tabellen schön in ein DGV einbinden kann?
z.B.:
ID
Name
FahrzeugID
ID
Name
FahrzeugArtID
ID
Name
Im DataGridView möchte ich nun für jede Person folgede Spalten:
Person.Name, Fahrzeug.Name, Fahrzeugart.Name
Lg
Tom
Hab mir die Ereignisse angesehen, leider helfen sie nicht wirklich weiter. Ich vermute das dieses Szenario von MS nicht berücksichtigt wurde. Falls noch jemand Ideen hat würde ich mich sehr freuen.
Hallo,
Gibt es beim MS Sync Framework 2.0 eine Möglichkeit ähnlich wie bei z.B. Subversion für folgenden Fall einen Konflikt (oder irgendwas Anderes) zu bekommen.
Ich will von Ordner A nach Ordner B synchronisieren
In beiden Ordnern wurde an einer Datei file gearbeitet
Nun würde ich gerne eine Meldung erhalten sodass der User entscheiden kann ob die Datei überschrieben werden soll.
Lg
Dominik
Sollen es 2 extensionmethods werden (klingt fast zu einfach) oder soll es wie ich vermute nur eine werden (auch wenn ich mir noch nicht vorstellen kann wie eine extensionmethod sowohl auf string als auch auf list<list<double>> angewendet werden soll).
Dir ist schon klar das das ne endlosschleife ist.
sobald die Methode DoUpdateAndDraw fertig ist wird sie wieder aufgerufen
i = 0x03;
(i & i) == (--i & i--)
(a & b) == (c & d)
1.) a = i ==> i=4; a=4
2.) c = --i ==> i=3; c=3
3.) b = i ==> b=3; i=4
4.) d = i-- ==> d=4; i=3
i ist wieder 3 und a&b ist gleich c&d
Somit ist h=i++ ==> h=3< i=4
Ausgabe: h = 3 | i = 4
Wobei es auch sein kann das 1 und 2 bzw. 3 und 4 jeweils in umgekehrter Reihenfolge ausgeführt werden. (Ergebnis bleibt gleich)
Hier in Österreich gibt es da ubook wo man als Student jeweils zu Semesterbeginn ein Apple, HP, Lenovo Laptop zu guten Preisen kaufen kann.
Frag mal bei der Uni nach ob es in Deutschland was ähnliches gibt.
Danke.
Wenn es zwingend auf Performance drauf ankommt, ist zweitere Variante etwas schneller.
Könntest du mir noch erklären warum die zweite Variante etwas schneller ist?
Ich hät da mal ne Frage. Sind folgende zwei Klassen ident? Wenn nicht was ist der unterschied?
class MyClass
{
List<object> list = new List<object>();
MyClass()
{
//do construction
}
}
class MyClass
{
List<object> list;
MyClass()
{
//do construction
list = new List<object>();
}
}
herbivore: Wenn A grün wird, führt A (wirklich A, die Ampel) die Aktion "gehe über die Straße" aus. B hat damit nichts zu tun. Ein EventHandler läuft (ohne weiteres Zutun) immer in dem Thread, in dem der Event gefeuert wird.
Wird das nicht im folgenden Beispiel zum Problem:
Sagen wir ich hab 2 Forms. Auf der einen ist eine TrackBar auf der anderen eine TextBox. Wenn ich den Wert der TrackBar ändere dann feuert Form1 ein Event sodass in Form2 der Text der TextBox auf den jeweiligen Wert gesetzt wird.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
new Form2(this).Show();
}
public class ValueChangedEventArgs : EventArgs
{
private int value;
public ValueChangedEventArgs(int value)
{
this.value = value;
}
public int Value
{
get
{
return value;
}
}
}
public event EventHandler<ValueChangedEventArgs> ValueChanged;
private void trackBar1_Scroll(object sender, EventArgs e)
{
onValueChanged(trackBar1.Value);
}
private void onValueChanged(int value)
{
EventHandler<ValueChangedEventArgs> valueChanged = ValueChanged;
if (valueChanged != null)
{
valueChanged(this, new ValueChangedEventArgs(value));
}
}
}
public partial class Form2 : Form
{
private Form2()
{
InitializeComponent();
}
public Form2(Form1 form)
: this()
{
form.ValueChanged += new EventHandler<Form1.ValueChangedEventArgs>(form_ValueChanged);
}
void form_ValueChanged(object sender, Form1.ValueChangedEventArgs e)
{
textBox1.Text = e.Value.ToString();
}
}
Wenn ich das richtig verstanden habe setzt somit der Thread von Form1 den Text der TextBox von Form2, was ja eigentlich nicht sein sollte.
Bitte um Erklärung.
Erklärung an einem Beispiel:
Du stehst vor einem Zebrastreifen der durch eine Ampel geregelt wird. Es ist gerade rot.
Du siehst auf die Ampel (Beobachtest das Ereignis)
Ampel schaltet auf Grün (Ereignis wird ausgelöst)
Nun gehst du über die Strasse (Reaktion auf das Ereignis)
Um erlich zu sein kenn ich mich in den Bereich selbst nicht so richtig gut aus.
Ich vermute allerdings das du hier Marshal benötigst
Vielleicht hilft dir folgender Link weiter:
How to Marshal a C++ Class
Einen Thread zu erzeugen ist relativ teuer und kostet mindestens 1 MB Speicher. Wenn die Zahl der User groß ist, könnte die maximal erlaubte Anzahl oder der verfügbare Hauptspeicher gesprengt werden.
Danke,
Hab gerade n kleines Program mit 2000 Threads gestarted und der Speicherverbrauch ist enorm.
Wiedermal was dazugelernt.
Wikipedia: ELIZA ist ein 1966 von Joseph Weizenbaum entwickeltes Computerprogramm, das die Möglichkeiten der Kommunikation zwischen einem Menschen und einem Computer über natürliche Sprache aufzeigen sollte.
Den Code des Programmes kann man sich in verschiedenen Sprachen herunterladen. Vielleicht hilft es dir weiter.
Ich hätte da noch den Ansatz das für jeden User ein Thread erstellt wird, der in gewissen Abständen (=Timeout) nachsieht wie lang der letzte Zugriff schon her ist.
Wenn die Session vorbei ist wirft dieser ein Event. Dieses Event wird abgefangen und somit der User aus der Liste gelöscht.
Ist wie gesagt nur n Ansatz, kann nicht beurteilen inwieweit das von der Performace bzw. vom Design her gut bzw. schlecht ist.
Vermute das es was mit folgendem Code zu tun hat.
Spiel spieler1 = (Spiel)alle[int.Parse(spiel.Spieler1.ToString()) - 1];
Spiel spieler2 = (Spiel)alle[int.Parse(spiel.Spieler2.ToString()) - 1];
Vermute das in der Variable
alle
noch alte Werte drin sind. Ansonsten sieht nichts Verdächtig aus.
OK, wenn du von der Methode den aktuellen Wert bekommst muss es am schreiben in die Listbox liegen.
Poste doch mal n bischen Code. Vielleicht findet jemand dann das Problem.
Ich vermute das es einer der folgenden 2 Gründe ist:
Ich würde eher zu Punkt Eins tendieren
Grundsätzlich gut gemacht.
Wie schon gesagt könnte es grafisch schöner gestaltet sein.
Hab da noch nen kleinen Mangel entdeckt:
Wenn man ein Schiff plaziert, geht es nach rechts und nach unten sofort mit, nach oben bzw. nach links ist es allerdings immer ein Feld zu spät dran.
Lg
Daem
Du kannst ein Addin für Excel schreiben.
Ob man auch Excel in eine Application integrieren kann bezweifle ich. Zumindest hab ich noch nichts davon gehört
Wenn ich das richtig verstehe erstellst du dir ne Formel inkl. Parametern in C# und fügst diese dann in Excel.Range.Formula ein.
Keine Ahnung ob man da was machen kann um Versionsunabhängig zu sein.
Ich würd eher sagen das du da auch noch Probleme bekommst wenn du Excel in verschiedenen Sprachen hast.
Besser wäre wenn du herausfindest was die Formel macht und du sie selbst implementierst.
Das ist ja mal sehr Interessant.
Hab jetzt mal folgendes Probiert:
Kleine Form mit nen Button
private void button1_Click(object sender, EventArgs e)
{
var temp1 = new Microsoft.Office.Interop.Excel.Application();
var temp2 = new Microsoft.Office.Interop.PowerPoint.Application();
}
Wenn ich nun im Debugger temp1.Windows.Count und temp2.Windows.Count beobachte, dann stimmt temp2.Windows.Count mit den tatsächlich offenen Fenstern überein, temp1.Windows.Count ist allerdings immer 0.
Vermute mal das ist ein MS Office Bug
Wir verwenden Add-In-Express um Excel-Add-Ins versionsunabhängig zu programmieren.
Wenn du für Standard die englischen Einstellungen verwendest, brauchst du ja die Englischen nicht mehr pflegen.
Somit hättest du Standard (=Englisch) und Deutsch
Du könntest auch die Aktivierungsreihenfolge setzen.
Dann kann man die Form auch super ohne Maus mit der Tabulatortaste durchlaufen.
Is jetzt zwar VB aber so kann man es machen:
Dim proc As New Process()
proc.StartInfo.FileName = "rundll32"
proc.StartInfo.Arguments = "printui.dll PrintUIEntry /y /n """ & stdPrinter & """"
proc.Start()
Sieh dir die Properties NumberFormat und NumberFormatLocal an.
Bei nem Datum beinhalten die z.B.: TT.MM.JJJJ
OK, habs nun selbst hinbekommen.
'VB .net Code
Dim powerpnt = New PowerPoint.Application
Dim presentation As PowerPoint.Presentation
If powerpnt.Windows.Count > 0 Then
presentation = powerpnt.ActivePresentation
Else
presentation = powerpnt.Presentations.Add()
End If
Guten Morgen,
Ich habe vor, Daten aus Excel nach Powerpoint zu exportieren.
Dabei soll geprüft werden ob Powerpoint bereits läuft. Wenn nicht soll Powerpoint gestartet werden ansonsten soll die offene Applikation verwendet werden.
Meine Frage ist nun:
Also er bringt beim debuggen bei application die meldung
"'Application' threw an exception of type "System.nullreferenceexception""bei selection:
"The name "selection" does not exist in the current context"habs jetzt wie in deinen link beschrieben so umgesetzt:
if((Excel.Range)Application.Selection!=null) { Excel.Range temp_range = (Excel.Range)Application.Selection; }
aber dann kommt die gleiche fehlermeldung
es ist aber im excel ein zellenbereich markiert, also application.selection müsste ja eigl nen wert haben, oder?
Wenn Application == null dann bringt dir deine Abfrage gar nichts.
Ist zwar schon ne weile her das hier was gepostet wurde, aber ich bin neulich wieder auf das Spiel gestoßen und muss sagen des es doch ziemlich Spaß macht.
Wie JAck30lena schon schrieb kann man ne Menge an Ideen reinbringen.
Nicht nur für Anfänger sondern auch für Fortgeschrittene ein toller Zeitvertreib.
Hi aequitas,
Convert.ToString(dtDate.Value.ToString("MM.yyyy"))
könntest du noch zu
dtDate.Value.ToString("MM.yyyy")
verkürzen
Wer arbeitet mit SharpDevelop und kann mir sagen wie es im Vergleich zu Visual Studio ist.
Wenn ich das zweite Dictionary mit ner foreach-Schleife durchlaufe dann kommen die Werte allerdings in der Reihenfolge in der ich sie der Dictionary hinzugefügt habe. Und da diese nach Value sortiert hinzugefügt wurden sind sie ja sortiert.
Bitte sag mir wenn ich da was falsch denke
Auf die Weise kannst du ein zweites Dictionary erzeugen das nach den Values des ersten Dictionarys sortiert ist (Neue Werte kommen allerdings wieder hinten hinzu, also nichts mehr hinzufügen 😉):
Dictionary<string, string> temp1 = new Dictionary<string, string>();
temp1.Add("a", "d");
temp1.Add("b", "b");
temp1.Add("c", "f");
temp1.Add("d", "c");
temp1.Add("e", "a");
temp1.Add("f", "e");
Dictionary<string, string> temp2 = new Dictionary<string, string>();
foreach (var item in temp1.OrderBy(a => a.Value))
{
temp2.Add(item.Key,item.Value);
}
Jetzt versteh ich nicht mehr was du willst.
Wenn du nur 2 Dateien austauschen willst ist fagju's antwort ganz gut (wenn auch sehr bescheiden 😄)
ansonsten bitte nochmal genau erklären was du willst
Da ich heute schon den ganzen Tag Excel Dateien in PDFs wandle werd ich auch mal meinen Mist dazugeben 😁
Bei uns in der Firma wird das so gemacht:
Aus einer Exceldatei wird eine Postscirptdatei erzeugt (Drucken).
Aus dieser Postscriptdatei wird dann ein PDF erzeugt (mit Ghostscript)
Perfomance:
Hab heute etwas herumprobiert und 215 Postscirptdateien (je 1ne Seite ExcelDiagram) werden in 1,5 Min. gewandelt. (also nichtmal 1/2 Sek. pro Datei)
Das Drucken der Postscriptdatei dauert ca. gleich lange.
Hoffe das Hilft
MFG
Dominik
Erstell in Form1 eine Variable vom Typ Form2
Im OpenForm2 EventHandler machst du dann folgendes:
temp = new Form2();
temp.Show();
Und im OpenForm2 EventHandler:
temp.Close();
Ist das nicht normal?
Ist bei mir auch so, hab keine devexpress tools installiert.
Kann ich nur bestätigen.
Auch bei mir Englisch obwohl deutsches VS 2008 Pro
Weil ich gerade nichts anderes zu tun hab (und weils mich selbst interessiert), habe ich mich mal mit dem Problem beschäftigt und ich muss sagen das es echt schwer ist da was zu finden.
Nach meinen derzeitigen Wissen musst du das Summary Information Property Set anzapfen.
Hier steht auch wie man das machen kann:
Access the Summary Information Property Set of a file using Visual C++
(ist allerdings in C++ und somit nicht wirklich meine Welt)
Wünsch dir viel glück damit
Wie wärs mit folgender Klasse
FileSystemWatcher-Klasse
Danke für eure Hilfe