Laden...
S
Somakia myCSharp.de - Member
Data Analyst Specialist Hessen Dabei seit 08.09.2010 269 Beiträge
Benutzerbeschreibung

Forenbeiträge von Somakia Ingesamt 269 Beiträge

26.11.2013 - 09:47 Uhr

verwendetes Datenbanksystem: MS SQL Server 2008 R2

Guten Morgen liebe myCSharp Community.

Ich habe aktuell ein Problem mit einer, aus meiner Sicht, sehr simpen Code-Stelle, welche eigentlich nur Relations aus einem DataSet entfernen soll.
Hierfür nutze ich die Remove(DataRelation) Methode des DataSets. Leider hängt sich das Programm hierbei teilweise einfach auf (bzw. es braucht extrem lange, bis eine Relation entfernt wird). [Anm.: Mit "lange" meine ich hier ca. 11 Minuten für eine Relation]
Feststellen konnte ich bisher folgendes:

  • es sind nicht alle Relations davon betroffen
  • es sind bei jedem Durchlauf mit gleichen Eingangsvorraussetzungen die gleichen Relations betroffen

Das gleiche Phänoment hats auch bei DataSet.Relations.RemoveAt(int) (mit vorhergehendem IndexOf(DataRelation), wobei dieser selbst recht schnell durch läuft) und auch bei DataSet.Relations.Clear().

Folgend der Code:

int x = -1;
foreach(DataRelation drel in dsRelationsToRemove)
{
	x = ds.Relations.IndexOf(drel);
	if(x >= 0)
	{
		ds.Relations.RemoveAt(x);
	}
	
	//ds.Relations.Remove(drel)
}

Ich hoffe, jemand hier hat eine Idee, woher diese lange Laufzeit kommen könnte?!

//EDIT
Nach einer sehr intensiven Debug-Session wurde der Übeltäter gefunden:
Das DataSet ist als DataSource über eine BindingSource an ein UltraGrid (UltraWinGrid) (Infragistics) gebunden... beim Entfernen vom Relationen werden einige Events des Grids gefeuert, welche in einer anderen Komponente abgehandelt werden. Hier scheint es letztens zu einer Änderung gekommen zu sein, welche dieses Problem hervorruft.

Vielen Dank an alle, die sich bis jetzt schon Gedanken zu dem Thema gemacht haben.
Asche auf mein Haupt, das hätte ich rausfinden sollen ohne hier nachzufragen 😦

so far
Karill Endusa

05.09.2013 - 18:45 Uhr

Wahnsinn aber wahr:
Es scheint mit der ausgewählten Farbe zu tun zu haben...
Nehme ich Control als BackColor und TransparencyKey geht es, nehme ich LightPink für beides geht es nicht...
Ich werde hier noch ein wenig herumprobieren, aber logisch ist das für mich nicht mehr.
Danke für die bisher geleistete Hilfe... dann muss ich mal gucken, ob ich eine Farbe finde, mit der das geht, was ich vorhabe, welche ich sonst in der Form nicht brauche 😕

04.09.2013 - 10:54 Uhr

Hallo dN!3L,

danke für deine Anregungen, aber ein entsprechendes Testprojekt habe ich schon angelegt ... das Problem bleibt bestehen.
Ich habe in dem Testprojekt nur BackColor, TransparencyKey und TopMost gesetzt.
Es könnte natürlich jetzt an der Kombination mit TopMost liegen, da durch die Metro-Oberfläche, soweit ich gehört hab, eine (unsichtbare) Schicht dazu gekommen sein soll.

04.09.2013 - 08:56 Uhr

Guten Morgen liebe MyC# Community,

Ich habe hier eine Windows Forms Anwendung, welche mir auf dem Bildschirm verschiedene Informationen anzeigt.
Damit ich diese Informationen (fast) immer im Blick habe, ist das Fenster dafür TopMost = true.
Damit es mich möglichst wenig stört, habe ich über den Trick TransparencyKey = BackColor den Hintergrund entfernt (Form ist eh BorderStyle.None).
Bis vor einiger Zeit hatte ich noch Windows 7, mitlerweile nutze ich aber auch Windows 8.
Seit dieser Umstellung habe ich nun das nervige Problem, dass ich nicht mehr durch den durchsichtigen Hintergrund hindurch klicken kann, was insofern schlecht ist, wenn sich dort hinter Objekte befinden (z.B. Desktop Icons), an welche ich beizeiten heran muss... aktuell behelfe ich mir hier mit TAB + Enter, aber das kann ja schlecht die Lösung sein 😃

Ich hatte es schon mit SetWindowLong und WS_EX_LAYERED | WS_EX_TRANSPARENT probiert, aber dann verschwinden die in der Form enthaltenen Controls ja leider auch 😕

Meine Frage nun:
Gibt es auch unter Windows 8 eine Möglichkeit, dieses Verhalten zu erreichen? (Transparenter Hintergrund + hindurch klicken) (Und wenn ja, wie geht das?)

16.08.2013 - 13:23 Uhr

Ich muss hier FZelle zustimmen... was C# angeht, habe ich bisher nur schlechte Erfahrungen mit Galileo Computing gemacht.
Nicht nur, dass hier zu gern Anfängerfehler (mit voller Absicht) gemacht werden... einige Male bin ich dort auch schon auf Quelltext gestoßen, bei dem mir schon direkt beim Ansehen klar war, dass entweder der Compiler meckert oder eine Exception geworfen wird (je nach Beispiel halt).
Interessanterweise begeistern sich gerade Anfänger sehr stark für eben diese Bücher von Galileo Computing...

Womit ich jedoch gute Erfahrungen gemacht habe, sind die O'Reilly Bücher der "Heads First" / "Von Kopf bis Fuß" - Reihe.
Sowohl das OOP als auch das C# Buch haben mich von der Aufmachung her sehr begeistert... dass dann bei C# als 3. Projekt ein Spiel entwickelt werden soll auf Basis von Windows Forms Controls (Picturebox etc.) ist leider ein Manko 😕

so far
Derpy Hooves

30.07.2013 - 10:18 Uhr

Das ist nur ein Hinweis...

man kann (und darf) in der .Designer.cs schon Änderungen vornehmen, sollte sich aber darüber im Klaren sein, welches Ergebnis eine Aktion hat... mitunter meckert sonst der Designer rum, dass er die Form nicht mehr darstellen kann 😉 (oder sie funktioniert gar nicht mehr... je nach gemachtem Fehler)
In diesem Fall sollte das aber keinen unterschied machen, du änderst ja nur den "Parent Container" (wenn man so will ^^)

P.S.:
Der Designer soll den Anwender nur bei der Entwicklung unterstützen.
Man muss ihn nicht zwingend nutzen.

29.07.2013 - 13:35 Uhr

Du solltest dir ganz dringend noch einmal ansehen, was ein Referenztyp ist 😉

Solange du nicht explizit eine Kopie anlegst, wirst du immer* das Original verändern.

*Mit vorsicht zu genießen, denn teilweise kann es anders sein (siehe string, und den ersten von MrSparkle geposteten Link)

29.07.2013 - 13:28 Uhr

Du müsstest in deiner Form 2 eine Membervariable bereit halten, in welcher du dein Custom Objekt speicherst.
Auf diese kannst du dann aus dem normalen Click-EventHandler wieder zugreifen und so Änderungen an deinem Objekt vornehmen.

Da dein Objekt, wenn kein Struct sondern eine Class, automatisch ein Referenztyp ist, kannst du auf das ref-Schlüsselwort übrigens verzichten 😉

Zusätzlich: MrSparke hat noch ein paar sehr gute Links zu dem Thema dagelassen 😃

Beachte bitte:
Das gehört zu Grundlagen und wird somit von [Hinweis] Wie poste ich richtig? Punkt 1.1.1 (und 1.1) abgedeckt.

25.07.2013 - 14:26 Uhr

Antworten und Lösungen oder sogar fertiges Quizgame wäre hilfreich.
Bitte keine unverschämten und freche Antworten von euch.

Hallo free7umper,

zusätzlich zum Hinweis von ujr, welchem ich voll und ganz zustimme, nochmal ein Hinweis:
Ich persönlich, aber sicher nicht nur ich, empfinde es als eine Unverschämtheit (da du selbst darum bittest, dass es nicht zu unverschämten Antworten kommt), wie du hier dein Anliegen darbringst.
Zuerst einmal ist myC# kein Code-Generator, also um ein "fertiges Quizgame" zu bitten ist hier fehl am Platz.
Eigentlich helfen wir recht gerne bei Problemlösungen... aber selbst lösen wir deine Probleme eher ungern für dich, wenn du kein Eigenengagement zeigst. Schon gar nicht, wenn hier das gesamte Projekt (? ich nehme an es ist das Projekt, ich werde sicher bei Mega nichts runterladen) uns einfach so vor die Füße geworfen wird mit den (implizierten) Worten: "hier Projekt, hat Fehler, macht mal!"

Ich hoffe auf dein Verständnis und bedanke mich im Voraus schon einmal dafür.

so far
Karill Endusa

23.07.2013 - 07:55 Uhr

Kleine Anmerkung, da ich öfter selbst mit diesem oder ähnlichen "Problemen" zu tun habe:
Ist der Button selbst auf der gesamten Webseite nicht eindeutig, so ist er es meist innerhalb seines Blocks (also Form, Div oder Ähnlichem) ... wenn diese eindeutig identifizierbar ist, findet man dann auch den Button...

Der Gedankengang dahinter:
Man arbeitet ähnlich einem XPath und sucht sozusagen den ersten eindeutigen nicht variablen Pfad zum Button selbst 😃

19.07.2013 - 10:38 Uhr

Schmerzlichsten Glühstrump zum Burzeltag myC# 😃
Ganz ehrlich: Bestes Forum im Bereich .Net, geile Community, geiles Team ... yay 😄

so far
Karill Endusa

16.07.2013 - 08:36 Uhr

Neben der Variante, diese Methoden für Intellisense zu verbergen, würde ich die einzelnen Methoden auch noch mit dem Obsolete-Attribut versehen, am ehesten sogar mit Fehlermeldung (also [Obsolete("COM only!", true)])
Ich weiß jetzt nicht, inwieweit sich das mit COM beißt... aber da die Attribute afaik nur für .NET gültig sind, spricht da nix gegen...
hat halt den Charme, dass, sollte der Programmierer trotz nicht vorhandenem Intellisense es schaffen, auf die Methode zuzugreifen, der Compiler eine Fehlermeldung ausspucken würde und er das Projekt nicht kompilieren könnte.

P.S.: Reflection lässt sich von Attributen übrigens nicht aufhalten 😉

ob es sowas für ganze Namespaces gibt, kann ich nicht sagen... spontan würde ich aber eher zu nein tendieren.

so far
Karill Endusa

08.07.2013 - 09:34 Uhr

Wie hier zu entnehmen -> MSDN: Formatierung von Typen würde ich es mal mit "0/00000/00" probieren (angelehnt an die Position deiner Slashes bei "x/xxxxx/xx")
Es handelt sich hier einfach um ganz normale Format-Strings (wie sie auch für String.Format hergenommen werden können oder bei einigen .ToString() Überladungen verschiedener Klassen)

01.07.2013 - 13:56 Uhr

(

if (moving == true /* ursprünglich if(moving)*/) // Wenn bool moving gleich true ist  

Ich kann es mir nicht verkneifen, hier eine Anmerkung zu machen: Wieso wurde hier das, vom Kommentar ausgehend, "richtigere" if(moving) zu einem if(moving == true) entgegen jedem Sinn umgeändert? (siehe auch [Tipp] Anfängerfehler == true / == false)){gray}

                startpb.Left += e.Location.X - startLocation.X; /* Nimmt den Abstand des visuellen Komponenten zur linken und zieht  
                                                                  die Startposition von der aktuellen Position ab, das ganze in der X-Koordinate. */  
                startpb.Top += e.Location.Y - startLocation.Y; /* Nimmt den Abstand des visuellen Komponenten zur rechten und zieht  
                                                                  die Startposition von der aktuellen Position ab, das ganze in der Y-Koordinate. */  

Hier liegt der Hase im Pfeffer begraben... zumindest zum Teil: Beim Klicken speicherst du dir die startLocation, beim Ziehen ziehst du von aktueller Location die Startlocation ab... bewegst du die Maus nur um einen einzigen Pixel (in X und Y Richtung), und führst diese Berechnung im Kopf durch, kommst du auf eine neue Location von ... ??? (und setzt dahin dann auch noch die linke obere Ecke des Controls selbst, anstatt von da aus wieder die Differenz zur startLocation umzurechnen) ... hier spielen mehrere logische Fehler zusammen...

so far
Karill Endusa

01.07.2013 - 12:43 Uhr

Hallo GrafWasserrutsche,

Durch ClickOnce-Veröffentlichung erstellst du ein Setup...
Wenn die Anwendung installiert ist, sollten die Kommandozeilen-Parameter, z.B. über eine Verknüpfung, wieder funktionieren (jedoch nur auf die installierte Anwendung, sprich "exe" bezogen)!

Wenn du kein Setup benötigst, verweise ich mal dezent auf den Beitrag von Scavanger 😃

so far
Karill Endusa

24.06.2013 - 10:42 Uhr

Hallo Peter Bucher (hah, ein Namensvetter im Nachnamen, cool)...

Es gibt nicht viele Klassen, welche bei mir eine Größe jenseits der 200-300 Zeilen erreichen...
konkret könnte es, wenn ich mir meine bisherigen Projekte mal so in Erinnerung hole, nur eine Klassen-Art sein, welche weitaus größer werden könnte: WinForms Controls ... ja, ich entwickel für mein Leben gern eigene Controls 😃 und die werden mitunter nun mal ab und an ein klein wenig größer, besonders wenn ich an all die Events, Properties und die interne Logik denke

so far
Karill Endusa (aka. Martin Bucher 😉)

24.06.2013 - 07:12 Uhr

Ich halte das ähnlich wie Abt und gfoidl:

  • Event Declerations
  • Private Fields
  • Properties
  • Constructors
  • Public Methods
  • Private Methods

Je nachdem, wie groß die Klasse wird (was eigentlich eher selten vorkommt, weil ich mir sonst denke ich hab den Code nicht sauber genug getrennt) kann es vorkommen, dass ich die Fields, Properties, Public Methods und Private Methods intern nochmals in Static und Instance unterteile

so far
Karill Endusa

13.06.2013 - 07:55 Uhr

(...), kann also nicht für alles Bitmaps erstellen)(...) Nur um das klarzustellen: Ich denke nicht, dass gemeint war, die Bitmaps vorher per Hand zu erstellen, sondern dynamisch im Code (ähnlich dem Ansatz von t0ms3n)
Nichtsdestotrotz ist aus meiner Sicht die Lösung von t0ms3n besser geeignet (da man eh lieber direkt auf die Form zeichnen sollte statt die PictureBox zu nutzen)

12.06.2013 - 07:43 Uhr

Ah ich muss mich entschuldigen...
ja, gemeint war die keybd_event aus der user32.dll 😃

Ich hatte mich selbst gewundert, da ich mir schon vorher sicher war, dass keybd_event in der user32 steht... da ich aber in Eile war, hab ich dem ersten Vorschlag von pinvoke.net vertraut ohne auf die Details zu achten 😕

11.06.2013 - 14:59 Uhr

Hallo blackdns,

hast du auch schon einmal probiert, ob keybd_event (via P/Invoke) funktioniert?
Informationen zur Nutzung findest du hier: keybd_event (coredll) auf pinvoke.net

16.05.2013 - 10:05 Uhr

Du kannst die Spalten bei der Angabe der Tabelle in Klammern dahinter spezifizieren...

Grant Select ON Table1,Ort,Trainer (TrName) FROM Benutzer A;

zumindest, soweit ich das verstanden habe... (siehe mssqltips.com > Filtering SQL Server Columns Using Column Level Permissions)

13.05.2013 - 08:33 Uhr

Ein Ping würde ausreichen, um zu prüfen, ob der Server erreichbar wäre... dabei ist jedoch zu beachten, dass es sich hierbei nur um die "physische Instanz" des Servers handelt, also den eigentlichen Rechner.
Um zu prüfen, ob ein HTTP(S) Server erreichbar ist, müsste man auch auf entsprechenden Ports anfragen... es besteht immerhin die Möglichkeit, dass die entsprechende Server-Software gerade nicht läuft oder nicht reagiert.

Ich würde daher dem Ansatz von T-Virus folgen.
Der HttpWebRequest mag hier eine Möglichkeit sein, kann aber u.U. auf den Traffic gehen (und somit mehr Zeit in Anspruch nehmen als nötig), wenn die Seite viel zurücksendet. Verringern ließe sich die Antwort des Servers, wenn man anstatt eines GET ein HEAD Request sendet.

13.05.2013 - 08:25 Uhr

if( t[index].Equals(new TestA())
Das kann nicht funktionieren denn ein Objekt ist nicht gleich einem anderen Objekt. Das könnte unter Umständen schon funktionieren, wenn er seine Objekte IEquatable implementieren lässt und die Equals-Methode überschreibt...
Diese Vorgehensweise ist zwar für diesen Zweck unter keinen Umständen anzuraten, würde jedoch auch zum Ziel führen...

08.05.2013 - 14:28 Uhr

Bei den Methoden Form.Show und Form.ShowDialog (hier wohl eher .Show) gibt es den owner-Parameter... einfach an der Stelle innerhalb der Main Form ein "this" übergeben...

jedoch nichts, was nicht auch ohne Weiteres in der MSDN oder Google nachgelesen werden könnte... wenn man nicht sogar mal von selbst drauf stößt, wenn man Form.Show aufruft!

07.05.2013 - 08:04 Uhr

Hiho alle miteinander,

man, selbst ich nicht, mag es kaum glauben, aber ich habe doch tatsächlich den Feiertag mit arbeiten verbracht 😃
Damit meine ich nicht etwa Gartenarbeit oder dergleichen, sondern ich hab mich doch tatsächlich an den Rechner gesetzt und den Großteil des Tages programmiert...

so far
Karill Endusa

06.05.2013 - 13:20 Uhr

Wenngleich es kein (soweit mir bekannt) Standard-Control mit dieser Funktion gibt und die verschiedenen "Hersteller" es teilweise anders nennen, denke ich, trifft die Bezeichnung "Dock Panel" es am besten.

Hier wäre z.B. eine mögliche Komponente mit diesem verhalten für Windows Forms:
SourceForge -> DockPanel Suite

19.04.2013 - 14:25 Uhr

Auch wenn ich erst letztens Etwas zum Kaffee-Versorgungszustand in meiner Firma geschrieben habe, komme ich nicht umhin, wieder Etwas zu schreiben...

nein, ich habe nicht die Firma gewechselt, im bin nur im Projekt beim Kunden 😉 und auch hier ist die Versorgung gewährleistet.

Nicht nur, dass hier auf jeder Etage (11 Stockwerke) mindestens 2 Nescafé-Großautomaten stehen... aus denen kommt nicht nur normaler Kaffee, sondern auch Cappucino, Latte Macchiato und sogar, besonders mein aktueller Liebling, Schokomilch... es handelt sich bei Allem zwar "nur" um Instant-Pulver Getränke, aber schmecken tuts trotzdem...

darüber hinaus befinden sich auf allen Stockwerken auch Wasserspender...

Man kann also nicht behaupten, man würde hier verdursten (geschweige denn an Kaffeemangel zugrunde gehen) 😉

so far
Karill Endusa

17.04.2013 - 08:29 Uhr

Ganz verrückter Ansatz, aber könnte u.U. funktionieren:
Du könntest versuchen, die GUI von Thunderbird via P/Invoke Calls anzusprechend/zu steuern.
Im simpelsten Fall würde ich die einzelnen Schritte über die Tastatur simulieren (keybd_event), aber es ist vllt. auch möglich, Maus-Klicks an die Controls zu senden (wenn du an die Control-IDs kommst (und es sich, soweit mir bekannt, um standard Windows Controls handelt)).

Nur ein Schuss ins Blaue 😉

so far
Karill Endusa

11.04.2013 - 15:21 Uhr

Meine HardStyle-Phase habe ich schon hinter mir 😉

Danach bin ich zu Dubstep gekommen, welches ich noch immer gerne höre...
Hauptsächlich schallern mir grad jedoch Glitch Hop, Trap, Moombahton und Moombahcore in die Birne...

(P.S.: Umso weniger Vocals, desto besser geeignet zum Coden ^^)

05.04.2013 - 13:19 Uhr

Eine ISO für Windows 7 gäbe es bei Chip.de: Gratis-Downloads: ISOs für Windows 7

ACHTUNG! Folgende Informationen sind aus verschiedenen Forenbeiträgen zusammengeklaubt:

Du kannst irgendeine der ISO-Dateien nehmen/verwenden. In der ISO sollte sich, wenn ich das soweit richtig verstanden habe, eine Datei mit dem Namen "ei.cfg" befinden. Wenn du diese löscht (es gibt dafür auch Tools, z.B.
>
) werden bei der Installation alle Windows 7 Versionen zur Auswahl angeboten (wohl aus Gründen der Aufwandsersparnis soll MS angeblich immer alle Versionen auf eine CD packen...).

Nun zu Office 2010:


  • >
    (Key benötigt)

  • >
    (der erste Link nach einiger Suche, der nicht auf TechNet verweist...)
05.04.2013 - 11:01 Uhr

Immer noch "Klammer-Argh!"
Zeile 18 müsste lauten

AND ([T-Verbindungen].[Nummer] Like "%@%" OR [T-Verbindungen].[Nummer] Like "*@*")

bzw.

AND (([T-Verbindungen].[Nummer] Like "%@%") OR ([T-Verbindungen].[Nummer] Like "*@*"))

(vorher war eine Klammer zu viel hinter dem zweiten [T-Verbindungen].[Nummer] 😉)

ist aber ein doch sehr haarsträubender workaround.
ich lege mir meine SQL meist als Konstanten an oder in den Properties meiner Anwendung. Je nach DB-System (ja, auch ich finde Access is Keines!) lasse ich diese dann durch eine Replace-Methode laufen welche solchen "Feinheiten" anpasst 😉

05.04.2013 - 09:40 Uhr

Diese VM soll anschließend an das gesamte Entwicklungsteam verteilt werden.

Ich hoffe, du meinst damit, dass du die virtuelle Festplatte als Datei verteilst bzw. die VM als Datei und sich jeder Entwickler diese auf seinem eigenen System "installiert"? Wenn alle Entwickler auf die gleiche VM auf einem Server zugreifen würden könnte deine Idee eh schon ins Wanken geraten.

Nun zu deiner Frage: Versionen ohne Lizenzschlüssel, auch bei VS, gibt es natürlich. Dazu gehst du am einfachsten auf die entsprechende Produktseite (z.B. die Visual Studio 2012 Produktseite) und dort gibt es unter jedem der kurzen Texte einen Link, betitelt mit "Testversion herunterladen".
Diese Testversionen lassen sich dann mit einem Key ganz normal aktivieren.

04.04.2013 - 08:31 Uhr

Hallo micky,

ja, dort ist ein Broken-Link (bzw. dead link), was dich aber nicht davon hätte abhalten sollen, die Google-Suche zu bemühen.

Die MySQL Licensing FAQ (OEM) sollten dir schonmal bei der Entscheidung helfen, ob du eine entsprechende Lizenz benötigst.

Dort steht auch noch einmal: Für mehr Informationen einfach das "MySQL OEM sales team" kontaktieren. Ich denke mal, dass hier eh das Team für den Erwerb einer Lizenz kontaktiert werden müsste... oder auch nur für eine Preisauskunft.

so far
Karill Endusa

03.04.2013 - 12:11 Uhr

ja...

auch wenns auf den ersten Blick komisch klingen mag, aber "falsches Framework" könnte noch immer die richtige Antwort sein...

Was ist denn genau als Zielframework deiner Anwendung eingestellt... (und was ist an Frameworks auf den entsprechenden Rechnern installiert, auf denen es nicht geht)?
Es gibt da immerhin das Framework und das Framework Client Profile...

02.04.2013 - 13:36 Uhr

Wenn ich dich richtig verstehe, hast du ein C#-Client Programm welches auf einem lokalen Rechner läuft und von dort aus auf Daten aus einer Datenbank über ein PHP-Script, welches auf einem Server läuft, zugreifen soll?

Dafür gibt es viele verschiedene Ansätze, und soweit ich mich erinnern kann gab es ein solches Thema auch erst letztens.
Du könntest via TCP/IP mit der Webseite direkt kommunizieren, du könntest via P/Invoke mit WinHTTP arbeiten, du könntest die Webclient-Klasse nutzen oder HttpWebRequest/HttpWebResponse...
Oder du nutzt für die Kommunikation zwischen Client und Server einen Webservice 😉

Dir stehen viele Wege zur Wahl, und auch meine kleine Auswahl ist bestimmt nicht komplett.
Warum du dafür jetzt explizit eine "Lib" brauchst, ist mir aktuell noch schleierhaft, aber vllt. kommt noch ein entsprechender Hinweis.

so far
Karill Endusa

25.03.2013 - 15:57 Uhr

Es besteht auch noch die Möglichkeit, dem Debugger zu sagen, dass er beim Auslösen einer Exception stoppen soll... sonst wird ja immer weiter nach außen durchgereicht...

Diese Einstellung findet sich unter (englisches VS):
Debug -> Exceptions

22.03.2013 - 13:35 Uhr

Hier ist einer der möglichen Wege (und unter anderem der Weg, den ich dafür gehen würde):

  • Eigene Control-Bibliothek (DLL) erstellen
  • UserControl erstellen, welches von Button erbt
  • OnPaint des Button überschreiben

Im OnPaint kannst du dann auf den Button "draufmalen" was dir beliebt (PaintEventArgs.Graphics ist hier das entsprechend zu nutzende Graphics-Objekt), erfordert nur ein paar Grundkentnisse in GDI+ unter .Net.

22.03.2013 - 08:43 Uhr

Nutze in Zukunft bitte die C#-Code-Tags wenn du Quellcode postest, sonst ist es eine Qual Quelltext zu lesen und so macht helfen auch nicht mehr wirklich Spaß.

Bitte beachte auch [Hinweis] Wie poste ich richtig? Punkt 1.1 und 1.1.1: Dein Problem liegt in meinen Augen offensichtlich im Verständnis der String.Substring Methode.

Du sagst nämlich, dass aus deinem String alles von Position 7 abgeschnitten werden soll, undzwar iy Zeichen. Wenn jetzt 7 + iy > String.Length, dann kommt unter Garantie eine ArgumentOutOfRangeException (was übrigens auch in den Informationen zu Ausnahmen zur String.Substring Methode in der Doku steht)

22.03.2013 - 08:35 Uhr

Davon abgesehen, dass es sich komplett um Grundlagen handelt (siehe dazu bitte [Hinweis] Wie poste ich richtig? Punkt 1.1 und 1.1.1)

  • Nutze zur Vorsicht besser Int32.TryParse anstatt Int32.Parse oder bau einen try-catch Block drumherum
  • Den einizigen "Fehler" sehe ich in der Zeile
System.Diagnostics.Process.Start(System.Environment.SystemDirectory +   "\\shutdown.exe", "-s -t {0}" + basis);

entweder du nutzt im hinteren Teil die normale Strink-Konkatenation über das Plus-Zeichen oder du nutzt String.Format... im ersten Fall ist das {0} dort schlichtweg falsch, im zweiten Fall... hast du String.Format vergessen und das Plus-Zeichen müsste durch ein Komma ersetzt werden, richtige Klammerung wird vorausgesetzt!

P.S.: "Aber irgendwie geht das nicht" ist keine ausreichende Fehlerbeschreibung.
Auch hättte das gute alte Debugging aufdecken sollen, was ich mit bloßem Auge erkannt habe, was mit vermuten lässt, dass du entweder gar nicht oder nicht gut genug gedebuggt hast.

21.03.2013 - 16:15 Uhr

Mir ist kein Weg bekannt, wie man Ressource, welche fest in der Application verankert sind, dort an Ort und Stelle verändern könnte (geschweige denn sollte).
Alternativ kannst du zumindest auf diesem Weg die Initial-Datenbank ausliefern und anschließend von deiner Application in ein entsprechendes Verzeichnis auf dem Rechner des Endnutzers kopieren lassen.

Es mag Möglichkeiten geben, Daten innerhalb der Anwendung zu manipulieren (und ich bin auch gespannt auf entsprechende Verweise, wenngleich mir das Thema schon bekannt vorkommt...), halte es persönlich aber eher für keine gute Idee (ich hab lieber ne Datenbank oder entsprechende Datei, mag aber auch was Persönliches sein).
(Mal ganz davon abgesehen, dass im Moment der Ausführung die Anwendungs-Datei in Benutzung ist und nicht verändert werden kann (können sollte)).

21.03.2013 - 08:16 Uhr

Wenn ich den Code richtig interpretiere ist der EventHandler Form1_Load der automatisch generierte EventHandler für das Load-Event der Form in welcher man sich gerade befindet (erzeugt durch z.B. einen Doppelklick auf die Form im Designer).
Sollte dem wirklich so sein: wieso nutzt du nicht this.Location?

Andererseits sollte es sich beim sender (Parameter des EventHandlers) um das Control handeln, welches das Event ausgelöst hat (in deinem Fall also das Form)... durch casten kommst du dann wieder an die Instanz der Form1 und solltest ebenfalls auf .Location davon zugreifen können

((Form)sender).Location = ...;

damit du das nicht alles innerhalb des EventHandlers machen musst, empfehle ich die Erweiterung der Methode PuttingON um einen Parameter vom Typ System.Windows.Forms.Form 😉

27.02.2013 - 12:03 Uhr

Wenn das dein größtes Problem ist, dann kannst du ja froh sein 😉
Ein Mesh-Objekt hat ja eine eindeutige Position auf der Gesamtkarte.
Dein Player hat zu jedem Zeitpunkt ebenfalls eine eindeutige Position auf der Gesamtkarte.
Aus der Player-Position lässt sich ohne Weiteres ein Viewport generieren.
Beim Durchgehen deiner Meshes musst du dann nur noch prüfen, ob es sich zum aktuellen Zeitpunkt (teilweise) innerhalb deines Viewports befindet... das ist, da es sich beim Viewport selbst ja nur um ein Rechteck handelt (bzw. handeln sollte), recht simple Geometrie (davon abgesehen, dass das .Net Framework dafür schon Methoden bereitsstellt (Rectangle.Contains Method)

27.02.2013 - 10:35 Uhr

Es kommt aus meiner Sicht unter anderem darauf an, wie die Bewergung später ablaufen soll... also läuft man, klassisch RPG Style (in Anlehnung an den RPG Maker XP) mit einer Schrittweite von einem Tile oder läuft man eher "dynamisch", will heißen man läuft solange die Richtungstaste gedrückt wird und beim loslassen steht man still... (unabhängig von der aktuellen "Position" im Walk-Cycle")?!

Wenn hier Tile-Steps ausgeführt werden, würde ich zur Variante 2 greifen, wenngleich ich nicht wirklich ein Array als Tile-Store nutzen würde. Dafür gibt es sicher bessere Collections 😉
Außerdem sehe ich hier eher den Vorteil von Tile-States (Objekt-States).

Andernfalls kann man es auch so machen, wie bei deiner Variante 1. Du müsstest halt irgendwo auch noch Speichern, welche Gebiete "walkable" sind und welche nicht (Berge, Wasser, etc.) und auch unter welchem Vorraussetzungen (Schwimmen, Boot, Flugmittel... etc.)

Auf jeden Fall sollte deine Map mehrere Ebenen haben:
Background-Layer: Hintergrund-Tiles/Grafiken, wie Gras, Sand, mgl. auch Wasser (wenn man nicht schwimmen kann z.B.)
Object-Layer: Welt-Objekte, wie Bäume, Berge und auch Wasser (wenn Schwimmen möglich sein soll)
Player-Layer: Das Layer, auf welchem du deine Spielfigur platzierst.
Foreground-Layer: Für simple Grafiken, welche auch man den Spieler und andere Objekte überdecken können... Wolken, Baumwipfel, Splashscreens... und natürlich das UI, außer man packt das auf ein extra UI Layer... 😉
Text-Layer: Zur Anzeige von Nachrichten

P.S.: manche Layer lassen sich u.U. auch zusammenfügen, wie Player-Layer und Object-Layer

so far
Karill Endusa

26.02.2013 - 13:45 Uhr

Es deutet vieles darauf hin, dass in den Eigenschaften des Projektes, welches du bekommen hast, das Signieren der Assembly aktiviert ist.
Sollte dies der Fall sein, ließe sich das Problem dadurch lösen, dass du das deaktivierst.
Frag aber vorher mal die Projektverantwortlichen, u.U. hat das auch seine Daseinsberechtigung 😉

26.02.2013 - 12:55 Uhr

Ini-Dateien sind "veraltet"... könnte man sagen.
Besser wäre ganz klar die Verwendung des .Net Konfigurationsmodells (siehe auch [Tutorial] Konfigurationsmodell im .NET Framework und natürlich auch die Forensuche und Google) ... wie man da die Lösung mit dem Update der Settings realisieren könnte, ist mir noch nicht klar, aber es sollte ebenso möglich sein, die app.config Datei auszutauschen.

Klar kann man auch Ini-Dateien nutzen, wenn man denn unbedingt möchte. Entsprechende Suchbegriffe zu diesem Thema: P/Invoke, ReadPrivateProfileString, WritePrivateProfileString
Jedoch ist davon abzuraten, vor allem wegen fehlender Typisierung der Settings...

26.02.2013 - 12:50 Uhr

Da meine Version bisher problemlos funktioniert hat...
2 Ansätze hätte ich noch in Petto:

  • Encoding... ich hab es noch nie mit ASCII probiert 😉 sondern nutze sonst immer System.Encoding.Default, was im Normalfall UTF8 entspricht
  • Das, was du denkst, was an Daten gesendet wird, stimmt nicht mit dem überein, was wiklich gesendet wird. Am besten eignen sich für die Analyse solcher POST oder GET Pakete entsprechende Sniffer, wie z.B. das FireFox Plugin LiveHttpHeaders
26.02.2013 - 09:18 Uhr

Dafür reicht es normalerweise aus, einen programmweit verwalteten CookieContainer zu erstellen und dem HttpWebRequest zuzuweisen 😃

25.02.2013 - 14:57 Uhr

Indem man den Titel bearbeitet und einfach ein "[gelöst]" davor schreibt 😉

Steht übrigens auch in [Hinweis] Wie poste ich richtig?

25.02.2013 - 14:36 Uhr

RightToLeft Layout hat etwas mit Sprachen zu tun, nicht mit Text-Positionierung...

RichTextBox.SelectionAlignment sollte dir weiterhelfen 😉