David W schrieb:
hustbaer schrieb:
Wenn du das (XML) unter "richtig machen" verstehst, dann haben wir sehr verschiedene Auffassungen davon was gut und richtig ist.
Und was meinst du mit "oder man schaut nach Stored Procedures"? Sag mir wie, oder sag du weisst es nicht. "Na guckt man halt" ist uninteressant. Ich habe geguckt. Lange. Ausführlich. Wiederholt. Es geht nicht sauber.
Das mit dem XML hab ich nur auf die Schnelle gefunden da ich auf Arbeit war und nicht so viel Zeit investieren wollte.
> http://www.codeproject.com/KB/database/PassingArraysIntoSPs.aspx
Das sieht schon sehr sauber aus, und scheint auch auf SQL 2000 zu gehen.
Unten "Passing a DataTable to a SP for insertion into a table" sieht sehr interessant aus.
Jo, kenne ich.
Das ist jetzt natürlich total subjektiv. Aber für mich ist das weitaus unsauberer, als eine vernünftige dynamic-SQL Lösung.
Und vor allem massiv viel langsamer.
Dann noch lieber über XML Variablen, obwohl auch die massiv viel langsamer sind.
Ehrlich gesagt habe ich gar keine Lust mich näher damit zu beschäftigen. Ich leb lieber in meiner Welt mit den Applikationen wo man SQL Statements nicht formatiert zusammenbaut. Ja die gibt es, ist keine Traumwelt
Blub
Hi,
du mußt jeden einzelnen Eintrag im Array gesondert angeben, d.h.
Struktur[] struktur = new Struktur[2] { new Struktur(10), new Struktur(10) };
(ich hoffe, das nimmt der Compiler so, habe gerade kein VS offen
Bei größeren Arrays würde ich dagegen alles per Code in einer Schleife abarbeiten lassen.
Edit: Deine Struktur sieht aber nicht unbedingt nach einem typischen Wertetyp aus. Daher wäre m.E. eine Klasse (class) besser dafür.
Hallo Leute,
ich habe in meinem Programm eine Funktion zum Umschalten der Sprache implementiert. Funktioniert auch bis auf das Menustrip. Dort werden die Texte der Items nicht übersetzt.
Mein Code sieht so aus:
private void comboBox_Verfuegbare_Sprachen_TextChanged(object sender, EventArgs e)
{
switch (comboBox_Verfuegbare_Sprachen.Text)
{
case "Deutsch":
localize(CultureInfo.CreateSpecificCulture("de"));
break;
case "English":
localize(CultureInfo.CreateSpecificCulture("en"));
break;
default:
break;
}
}
private void localize(CultureInfo culture)
{
Thread.CurrentThread.CurrentUICulture = culture;
// Beschriftungen setzen
ApplyControlResources(new ComponentResourceManager(this.GetType()), this);
}
private void ApplyControlResources(ComponentResourceManager resourceManager, Control control)
{
// Prüfen, ob es sich um eine Form handelt
// =======================================
if (control is Form)
{
resourceManager.ApplyResources(control, "$this");
}
else
{
resourceManager.ApplyResources(control, control.Name);
}
// Prüfen, ob es sich um eine Komponente handelt
// =============================================
if (control is IComponent)
{
// Alle untergeordneten Controls durchgehen
// ========================================
foreach (Control childControl in control.Controls)
{
// Rekursiver Aufruf
ApplyControlResources(resourceManager, childControl);
}
}
}
Hat jemand eine Idee warum es nicht funktioniert?
Danke
Es liegt daran das Location vom Type "Point" ist, also ein Value-Type. Die Property gibt daher eine eine Kopie zurück (byValue halt). Location.X würde also den X-Wert eines temporären Point-Objektes ändern, nicht das tatsächliche Location-Objekt.
Die irreführende Anzeige von Intellisense rührt von daher, das hier die Doku der Point-Klasse angezeigt wird.
Einfacher kann man die Location natürlich mit:
Location = new Point(x,y);
oder gleich
Left = x;
Top = Y;
Wieso machst du ein neuen Thread auf?
Und wie man es verwendet habe ich in dem anderen Thread doch im Pseudocode geschrieben.
List<int>lotto;
lotto = new List<int>();
Fass das zusammen nach
List<int>lotto = new List<int>();
lotto.Add(AnzahlZahlen);
Das fügt die Zahl 6 der Liste hinzu, dadurch hast du dann 1 Element in der Liste.
lotto.Contains(AnzahlZahlen);
Hier prüfst du ob die Zahl 6 in der Liste vorhanden ist.
Was du suchst ist das hier:
for (int i = 1; i <= AnzahlKugeln; ++i)
lotto.Add(i);
lotto.Sort();
Hier sortierst du nun die Zahlen (in deinem Fall die Zahl 6) der reihe nach, aber du möchtest ja ein Shuffle erreichen.
Was du suchst ist das hier:
lotto.Sort(g => Guid.NewGuid());
Nun gibst du bei dir die Zahl 6 aus, aber was du ausgeben möchtest sind 6 Zahlen von den zufällig gewürfelten 49
Was du suchst ist das hier:
var numbers = lotto.GetRange(0, AnzahlZahlen);
foreach (var number in numbers)
Console.WriteLine(number);
Es ist doch alles ganz einfach.
1. Erstelle eine Liste mit allen verfügbaren Zahlen (lotto<int>)
2. Schüttel die Liste einmal durch (lotto.Sort)
3. Ziehe eine gewünschte anzahl (GetRange)
4. Gib sie dann in der Konsole aus (Console.WriteLine(number))
Servus,
zuerst solltest du dir angewöhnen den geposteten Code in Tags zu setzen. Dann könntest du dir vielleicht vorher Gedanken darüber machen, ob nicht vielleicht ein anderer User vor einem ähnlichen Problem stand. Das führt dann auch dazu, dass man die Suche benutzt. Mal ganz nebenbei, solche Themen wie Primfaktorzerlegung gibts zu Hauf...
Gut, hättest du diese ganzen Ratschläge beachtet, dann wärst du auf (u.A.) folgenden Thread gestoßen:
http://www.c-plusplus.net/forum/224509
Ok, es ist nun C++. Aber das sollte bestimmt kein Hindernis sein, dass Ganze umzuschreiben oder?
Ne, bestimmt nicht. Hättest du auch das berücksichtigt, dann wurde dein Code nun ungefähr so aussehen:
static void Main(string[] args)
{
long zahl = 20;
long teiler = 0;
Console.Write("{0} = ", zahl);
while (zahl != 1)
{
teiler = Teiler(zahl);
Console.Write(teiler);
zahl = zahl / teiler;
if (zahl != 1)
Console.Write(" * ");
}
Console.WriteLine();
Console.WriteLine("Programmende!");
Console.ReadLine();
}
static long Teiler(long zahl)
{
long teiler = 2;
long x = (long)Math.Sqrt(zahl);
while (zahl % teiler != 0)
{
if (teiler >= x)
return zahl;
else
teiler++;
}
return teiler;
}
Verblüffend oder?
Hallo kratos,
wenn du Interop programmieren willst, könntest du auch direkt C++/CLI verwenden.
Oder aber dein C++ Programm bietet eine reine C-Schnittstelle an und du greifst von C# aus per P/Invoke ([DllImport]) darauf zu (wie GPC schon geschrieben hat).
Hallo,
ich bin grad dabei ein OpenSource Tool zu programmieren.
Kennt jmd einen Public Key Server über den ich per C# Schlüssel hoch bzw. downloaden kann? bzw auch weiß wie das geht?
Danke
Jup, kann man so stehen lassen, bis auf ein Detail:
C# ruft in dem Ansatz nur managed C++ auf (C++/CLI).
Der Aufruf nativer Funktionen/nativem C++ passiert nur innerhalb der DLL zwischen C++/CLI und C++;
Du hast also eine Dll die sich nach aussen wie eine normale managed Dll verhält und nur intern native Anteile hat.
Vergisst man pin_ptr, so "funktioniert" auch erstmal alles auf den ersten Blick, halt bis die erste GC zum unpassenden Zeitpunkt läuft...
Hallo Harald,
wenn du mehrere UserControls erzeugt hast, dann speichere diese am besten in einer List<T>, d.h.
List<MyUserControl> myUserControls; // als Klassenmember der Form
// in Methode, welche die UserControls erzeugt
MyUserControl uc = new MyUserControl();
myUserControls.Add(uc);
Und dann kannst du mit einer for- oder foreach-Schleife alle UserControls durchiterieren:
foreach(MyUserControl uc in myUserControls)
uc.Inform(...);