Klar, du hast ja auch in dtEnd kein Year gesetzt, somit ist es auf dem Standardwert = 0, bzw irgend nen Wert, den du nicht haben willst 😃
Bei Pfadangaben immer Path.Combine verwenden, so fällt dir viel Zeichensalat weg.
Mal abgesehen davon, dass du eigentlich nen Break bei auftreten der Exception bekommen müsstest, setzt doch mal nen Breakpoint bei form1_load und im ctor des Forms, und dann gehste diese (abgesehen von der Init Methode) Schrittweise durch. (Im ctor deswegen, weil du den JPEG-Stream direkt initialisierst, was einer Initialisierung im ctor gleichkommt). Dann müsstest du die Fehlerquelle eigentlich ordentlich finden können.
stimmt, ich kenn ihn auch, aber ich muss immer überlegen, was genau gemeint ist - und dann nehm ich die etwas längere Schreibweise, solange ich dann nicht groß drüber nachdenken muss 😉
gfoidl: Ich würd den fancy name operator nicht benutzen, denn er ist nicht so bekannt. Ich find dn!3ls version besser, weil ich mit einem Blick sehen kann, was genau gemeint ist, bei value?? false nicht. "Sowenig wie möglich, soviel wie nötig" wäre hier ganz angebracht, ich find die etwas höhere verbosity von dn!3l lesbarer. Es ist nicht nötig, aber hübscher und schneller ohne zu denken sichtbar.
Ich habe hier einen 24" von Samsung stehen, es war anfänglich von 17" eine immense Umgewöhnung, könnte mir das Ding aber auch nie wieder wegdenken. Es ist sowas von viel Platz, und Programmieren macht gleich viel mehr Spaß!
Ich hoffe, dass ich sowas niemals erleben muss, ich könnte mir durchaus vorstellen, dass man mit jeder Codezeile, die man von sowas liest, ne Minute Lebenszeit extra verliert.
"estimatedResultCount": "59600000"
beispiel hier:
http://code.google.com/intl/de-DE/apis/ajaxsearch/documentation/#fonje
Nein, dagegen hat Google ja nichts. Sie haben nur was dagegen, wenn du stattdessen die für Menschen gemacht Seite übermäßig häufig anforderst, nur um sie zu parsen.
Sie wollen, dass die API benutzt wird. Das hat zwei Ursachen:
a) Die API ist vollkommen dokumentiert, somit wissen Programmierer genau, was welcher Parameter ist (dazu ist das Video auf der Hauptseite der API sehr interessant) im Gegensatz zu der Websuche
b) Die Serverlast ist über die API weit geringer, der Overhead ist minimal gehalten (es ist ansich nur ein JSON-Array mit sehr wenig Metadaten).
Wenn du nen normalen Webrequest auf die Googlepage machst, müssen die Server immens viel Overhead generieren, der dich als Programmierer ansich ja nicht interessiert, du musst ihn dann selbst wieder rausparsen (wo es ja auch wieder zu Fehlern kommen kann). Desweiteren findet Google die falsche Verwendung von Parametern insgesamt auch nicht wirklich toll, weil es auch eine Last auf den Server ausübt.
edit: http://www.youtube.com/watch?v=NOAa05s0tck das erwähnte Video, geht über die Entwicklung der Ajax/Restful API und im Rückblick auch auf die frühere Verwendung der SOAP-API, sowie die Probleme, die damals durch die nicht Dokumentiertheit auftraten.
http://code.google.com/intl/de-DE/apis/ajaxsearch/documentation/#fonje
Ist eine RESTful API für alles nicht Javascript-mäßiges, gibt dir JSON-Daten zurück, die dann parsen musst (glaube, da gibts schon was fertiges im Framework)
semtex: Den API-Key braucht man nicht, um die API zu benutzen, es ist nur eine Identifikation für Google, wenn Probleme auftreten; dann können sie dich kontaktieren und dir Bescheid sagen.
Wäre aber IMO ideal um das Prinzip der einzigen Verantwortung mit der Datenkapselung zu verbinden. So könnte man z.B. beim Serialisieren auch private Member mit-serialisieren, was ab und zu nötig ist.
Sehe ich nicht so. Ich würde eher die serialisierung über ein Interface in die Klasse selbst verlegen, sodass es von der Klasse selbst übernommen wird. Nur die Speicherung wird außerhalb erledigt.
Bei mir kennen die zu Cachenden Objekte eine ICacheEngine, die Speicherungsmethoden hat. Somit werden die Objekte automatisch gechached, wenn sich Daten ändern (was bei diesen Objekten nur von außen passiert, d.h. außer neue Daten werden reingefüttert bleibt das Objekt gleich).
Beide Assemblies, die ITestInterface implementieren, brauchen Referenzen auf die Assembly von ITestIternface.
Das Interface muss natürlich sowohl dem Loader, als auch der Klasse selbst bekannt sein.
Da du natürlich keine Referenz auf die dll haben willst (wäre ja Schwachsinn, dann brauchste den Dynamischen Loader ja garnet), musst du es anders lösen.
Ich hab ein Projekt mit den Interfaces gemacht (da ich verschiedene Pluginarten haben werde), das sowohl vom Loader als auch von den Plugins referenziert werden können.
Somit haben beide Komponenten Zugriff auf das nötige Interface.
Bin ich dagegen. Wenn man Zugriff auf die Private/Protected Elemente einer anderen Klasse benötigt, zeugt das meiner Meinung nach von schlechtem Design.
Kommen Vererbung und Friends nicht aufs gleiche hinaus?
Hat jemand dieses Buch und kann darüber berichten?
Ich denke, GDI+ wird hier einfach an die Grenzen stoßen, wenn es tatsächlich alles neugezeichnet werden muss. Da wäre WPF wohl angemessener...
Ist doch logisch - du hast ansich string.Replace("--", "-") als Regex geschrieben.
Das benötigte Regex für das Minust oben doch schon genannt: "-+", was soviel heißt wie "soviele - wie möglich bis zum ersten Zeichen, dass nicht - ist".
Ist nicht möglich aufgrund des Headers etc.
Meine Idee wäre: Datei einlesen -> FFT (fast fourier transformation) -> Werte umdrehen -> zurücktransformieren -> mit neuem Header speichern.
Denke, da sollte aber jemand was zu sagen, der davon Ahnung hat.
herbivore, da PointCollection sich wie eine List<> verhält (siehe msdn: PointCollection Class, abschnitt "Remarks") bzw IList<Point> implementiert, ist sie auch über Linq queryable.
das ist aber was anderes als Remoting, Remoting ist (zumindest nach meinem Verständnis) das Fernsteuern eines einzelnen Programmes. Du müsstest also dementsprechend ein Programm (bzw. Service) haben, dass du auf dem Zielcomputer hast, und dann mit Remoting ansprechen kannst.
Für welchen Zweck brauchst du das denn?
Aber ist dein produziertes XML-Dokument nicht eigentlich gegen den Sinn von XML?
Du setzt ja eine Ausgabeform voraus, jede andere Verwendund würde Stringparsing erfordern.
Wäre es nicht inteligenter, einfach folgendes zu machen
<Actor>
<Name>foo</Name>
<Character>bar</Character>
</Actor>
oder
<Actor name="foo" character="bar"/>
?
Dadurch hast du auf jedenfall eine höhere Wiederverwendbarkeit.
Es ist möglich, über PHP Webservices bereitzustellen.
Ich halte PHP nicht füe eine Sprache, worüber man OOP lernen sollte... Das programmieren von Klassen ist, gelinde gesagt, grausam. Okay, vieleicht ist das ganze jetzt auch subjektiv, da ich Klassendesign mit C# gelernt (selbst beigebracht) habe, und von den Features einfach nur verwöhnt bin. (In php musst du overloads selbst kennzeichnen, hast keine Typensicherheit und damit auch keine bestimmten Signaturen... Wahrscheinlich bin ich tatsächlich einfach nur beeinflusst 😃)
in der tabelle unternehmen habe ich noch kunde und lieferant als boolischen typ genommen, damit ein unternehmen mit seinen niederlassungen entwerder unter KUNDE oder LIEFERANT gespeichert wird.
Das würde ich nicht machen, denn es erzeugt Redundanz. Eine Spalte als Integer ist da angebrachter, wo du dann zb. sagen kannst 0 = Kunde, 1 = Lieferant, und einfach nur die Zahl eintragen kannst. Dadurch hast du auch die Möglichkeit, zb. einen Reparaturbetrieb einzubauen, ohne an der Tabelle etwas zu ändern.
wenns keine Managed Assembly ist, dann wird das aber nicht klappen.
Solange man sich nicht nur auf die GUI verlässt, ist das ja auch in Ordnung, aber wenn man mit dem Schema "GUI überprüft schon, muss ich net machen" drangeht, wird es knallen. Garantiert.
Zum Thema PHP: Bei PHP ist, aufgrund der Tatsache, dass es eine Skriptsprache ist, eine Typsicherheit wie in C# garnicht möglich, da es keinen Compiler, sondern nur einen Interpreter gibt. (Allerdings ist zb. zur Laufzeit eine Typsicherung über den Vergleichsoperator === möglich (entspricht ==, nur mit zusätzlicher Typenüberprüfung, true === 1 ergibt false).
C# und PHP haben eben ganz andere Einsatzgebiete, und bieten aufgrunddessen auch andere Herangehensweisen.
Man kann es sich aber auch schwer machen 8o
Dann ist es kein Windowsdienst - denn die laufen auch, wenn kein Benutzer eingeloggt ist.
Ehrlich, wenns um sowas brisantes geht, würd ichs mir zweimal überlegen, es zu veröffentlichen; Selbst wenn es nicht so einfach wäre an den Code zu kommen.
Du kannst soviel verbieten wie du willst, du kannst nichts dagegen machen, wenn jemand es sich mit dem Reflektor anguckt.
edit: D'oh, klammern lesen -.-
Ist zu früh. Sorry.
Silverlight verwendet eine spezifische, abgespeckte Version des .Net Frameworks, dadurch geht es nicht. Du müsstest den Datenzugriff also wohl oder übel über Webservices regeln.
ich würde eher die Hauptinstall auf dem Server updaten, denn es jedesmal beim Rechnerstart zu machen... Und eventuell solltest du dir mal die Pc-Wächter Karten genauer angucken, diese können viel Arbeit ersparen.
Silverlight enthält System.Drawing eben nicht, das ist ja grad das Problem dabei.
Normalerweise fängst du mit der Differentialrechnung an, da die Integralrechnung mehr oder minder darauf aufbaut. Ich hab das aktuell in der Schule (12. Jahrgang), und ich versteh die Theorie, und vl die Anwendung zum Teil (in Sachen Flächen/Volumenberechnung von Funktionen) aber wie das sonst alles zusammenhängt...
Mach dir nichts draus, es ist einfach höhere Mathematik.
So, als letztes Update:
Fehler gefunden und eliminiert. Fehler lag in einem falschem Regex-Pattern, wodurch sich das Programm zu Tode gesucht hat.
Vielen Dank für eure Hilfe und Anstöße.
Gruß Fema
Nach weiterem debugging habe ich herausgefunden, dass es nicht an diesem Teil des Programmes liegt. Dass der Mainthread geschlossen wird, liegt wohl tatsächlich am normalen managed Threadwechsel.
Der eigentliche Grund dürfte in einer Iteration einer Regex-MatchCollection liegen.
Gibt es dahingehend irgendwelche Einschränkungen vom Betriebssystem?
edit: grammatik
edit2: nach weiterem suchen denke ich, dass das Pattern zu komplex ist, und in verbindung mit zuvielen möglichen matches, die in der Matchcollection landen müssen, das ganze zum abschmieren bringt.
Danke für die Hilfe 😃
Ja, das ist mir bekannt, allerdings sollte dann auch das Programm weiterlaufen, oder? Dies ist nämlich nicht der Fall.
Moin, ich habe folgenden Code:
foreach(int i in ids)
{
output.Add(SingleMail(i));
}
wobei ids eine List<int> ist, und SingleMail(int) eine recht lang andauernde Methode ist (Ja, ich weiß, dass man es Multithreaded aufbauen sollte, dies ist hier aber für den Fehler nicht relevant, da es auch mit mehreren Threads auftritt).
Irgendwann bekomme ich dann folgende Meldung:
The thread 0x1394 has exited with code 0 (0x0).
Danach probiere ich dann über pausieren des Debuggens herauszufinden woran es liegt, was aber aufgrund des Statuses des Threads natürlich nicht möglich ist.
Es tritt keine Exception oä. in SingleMail(int) aus, somit habe ich keine Ahnung wonach genau ich suchen soll, um den Fehler zu beheben.
Hat irgendwer dieses Problem schon einmal beobachtet und hat eine Lösung dafür?
Also nach meiner Auffassung sind Events genau für diesen Zweck da 😉
*snip*
Hast Recht, sollte ich mich mal mehr mit beschäftigen...
Es gibt nur eine Klasse Person und diese hat eine Eigenschaft mit der der Typ (A oder B) der Person festgelegt wird. Ich dachte dafür extra eine Basisklasse und 2 abgeleitete Klassen zu nutzen wäre ineffektiv und übertrieben.
Somit verwende ich auch 2 Listen des selben Typs: List<Person>Die Lösung von Femaref muss ich mir mal genauer anschauen. So wie es aussieht muss ich da meine Klasse Person erweitern.
Danke nochmal fürs anschauen und drüber nachdenken.
Nein, musst du nicht, denn ich habe die Methode mit Absicht so weit gefasst. Wie du das beschreibst, hast du Irgendwie sowas:
public class Person
{
....
public PersonType Type{get;set;}
....
}
public enum PersonType
{
TypeA = 1,
TypeB = 2
.....
}
Wenn du dann meine Methode nimmst, sähe die so aus:
public IList<Person> PersonsByType(PersonType filter)
{
List<Person> output = new List<Person>();
foreach (Person p in list)
{
if(p.Type == filter)
output.Add(p);
}
return output;
}
Somit würdest du nichts verändern müssen. Das gleiche kannste natürlich auch mit einer int-Eigenschaft, oder string-Eigenschaft oder sonstwas machen.
public IList<Person> PersonsByType(var filter) // musste hier selber sehen
{
List<Person> output = new List<Person>();
foreach (Person p in list)
{
if(p.FilterProp == filter)
output.Add(p);
}
return output;
}
So würd ichs machen, lasse mich aber gerne über eine bessere Methode belehren (in C# 3.5 und .net 3.5 würd ichs mit Linq machen)
Du kannst aus Managed Code nicht auf den Speicherbereich eines anderen Programmes zugreifen - musst also die API-Funktionen zugreifen (www.pinvoke.net) um den Speicher anderer Anwendungen zu lesen. Allerdings kann ich dir nicht sagen welche das sind, da ich mich damit noch nicht beschäftigt habe; Diese Frage kam aber auch desöfteren hier im Forum auf.
Du musst dann eben jedesmal wenn ein Unterordner aufgerufen wird, einen neuen FTP-Request absetzen und den Ordnerinhalt laden. Anders machen es die ganzen FTP-Clients ja auch nicht, da wird nicht die ganze Ordnerstruktur vorgeladen, sondern immer dann wenn der Benutzer ein neues, noch nicht bekanntes (deshalb auch nicht im Cache befindliches) Element aufruft.
Für was benötigst du denn die Daten in der Datei? Wäre es nicht vieleicht auch möglich, unterschiedliche Dateien zu verwenden?
Denn wenn du einfach blind in eine Textdatei schreibst, auch wenn es nicht zu Kollisionen beim Zugriff kommt, wird es zu Datenverlust kommen.
Also entweder verschiedene Dateien verwenden, oder auf dem Server ein Service laufen lassen, der das schreiben übernimmt, nach dem Prinzip, dass das erste was reinkommt, auch als erstes geschrieben wird.