Laden...
T
tkrasinger myCSharp.de - Member
Softwareentwickler Enzesfeld (Niederösterreich) Dabei seit 26.03.2008 574 Beiträge
Benutzerbeschreibung

Forenbeiträge von tkrasinger Ingesamt 574 Beiträge

26.02.2009 - 09:19 Uhr

.., nur fällen sie weniger auf ...

gibts das Wort "fällen" tatsächlich? In dem Zusammenhang? Ich kenn nur einen Baum "fällen".

26.02.2009 - 08:21 Uhr

Solange es nur diese 2 Eigenschaften sind müsste es über haarrrgh's Variante problemlos funktionieren. Sollten das aber beliebig viele Einträge sein, wird man über die Pivot() funktion nicht mehr herumkommen. Die ist zwar anfangs recht unverständlich aber dann sehr dienlich.

26.02.2009 - 08:19 Uhr

Also ich hab während des Codens keine Rechtschreibprüfung. Ich denke viele Fehler kommen vom Vertippen, ein Großteil aber kommt immer noch mangels Wissen.
Geh mal durch ne Stadt und achte darauf wo da überall Fehler versteckt sind. Dank der neuen Rechtschreibung glauben die Leute es gibt kein 'ß' mehr und alles wird mit 2 s geschrieben. Wie "ausserdem": pfui!

Bei mir kommen Rechtschreibfehler nur vom Tippen, ab einem gewissen Tempo erwischt man die Dinge einfach nicht mehr so richtig und die meisten machen sich nicht die Mühe dann zu korrigieren.

25.02.2009 - 10:06 Uhr

ich denke die Klammern beim SET sind falsch.

Außerdem würd ich SCOPE_IDENTITY() benutzen, das ist besser.

24.02.2009 - 18:27 Uhr

Ich hab im Netz ein paar Sachen gefunden, allerdings nur für die falsche Richtung.

Ich hab ein objekt Kunde mit einer Property int? Branche.

In eine ComboBox lade ich eine List<> an DisplayItems von Branche mit { int? Value; string Text).
Das Problem ist nun, dass die ComboBox keine Nullwerte übernehmen kann, weil das "Value" beim Setzen des ValueMembers immer nach object geboxed wird, und daher in meinem Fall immer versucht wird, einen int (geboxt) auf einen int? zu schreiben, was leider nicht geht.

Selbst wenn ich im DataBinding.Parse-Event das abfange und dort auf e.Value den int?-Wert schreibe, steht im e.Value nachher wieder ein object{int} drinnen und kein int?.

Irgendwer eine Idee was ich machen kann?

24.02.2009 - 08:22 Uhr

hm, irgendwie werd ich aus seinen Angaben nicht schlau, denk mir aber, dass wohl das hier zum Ergebnis führen müsste:

select id,SUM(Case WHEN error <> '-------' THEN 0 ELSE 1 END)  from (
	select 1 as id,'-------' as error union
	select 2,'-------' union
	select 3,'failure' union
	select 2,'failure' union
	select 3,'failure' union
	select 4,'-------' union
	select 1,'-------' union
	select 1,'failure' union
	select 3,'failure' union
	select 4,'-------'
) Data
Group by id

id (No column name)
1 1
2 1
3 0
4 1

19.02.2009 - 09:30 Uhr

Natürlich könnte ich die DLLs referenzieren, allerdings ändere ich eben damit das Projekt und das haut mir dann wiederum die große Solution zusammen. Dazu müsste ich alles ändern und das will ich eigentlich nicht.

19.02.2009 - 08:59 Uhr

Ich hab aufgrund verschiedenster Gründe eine Solution mit 41 Projekten. Arbeiten tu ich aber momentan nur an 3.
Nun sind aber in den Projekten die Projekte tw. gegenseitig referenziert.

Wie kann ich irgendwie eine "Light"-Version meiner Solution erstellen, in dem ich nur die ca. 5 Projekte reinhole die ich brauche? Wenn ich das mache, seh ich bei den Referenzen immer Fehler, weil ja die anderen Projekte nicht da sind. Wie kann ich das lösen, ohne die Projekteinstellungen zu ändern? Schließlich soll das ja dann auch wieder problemlos funktionieren, wenn ich wieder die große Solution lade.

PS:
Ich hab alle anderen Projekte bis auf die 3 die ich brauche auf "nicht" builden gestellt. Trotzdem braucht mein Studio 220MB, dewegen würd ich das gern anders probieren.

19.02.2009 - 08:27 Uhr

Ich glaub das hatte ich schon mal. Das WebBrowserControl hat glaub ich ne Property "AllowNavigate" oder sowas, die ist per Default auf false. Die muss man auf true setzen, sonst bringt das ganze Url setzen und Navigate ausführen gar nix.

11.02.2009 - 16:52 Uhr

Noch keine Ahnung wie ich die Dinger in die Datenbank bekomme, wahrscheinlich mit Reflection auslesen

Was willst du denn auslesen? So wie ichs jetzt verstanden habe machst du in etwa:

Adress obj = GetAdresseFromDatabase();
// obj.LfdNr ist 12345;
... irgendwas mit dem obj machen
obj.SaveToDatabase();
// da wird wohl immer noch 12345 drinnen stehen, wenn du nicht zulässt, dass ma da was reinschreibt.

Oder betrifft deine Frage jetzt nur IDs (Autowerte) und laufende Nummern die eben niemand beschreiben sollte und bei "normalen" Werten machst du eh einen Setter dazu?

11.02.2009 - 15:48 Uhr

nur mal so eine Frage nebenbei: Wie schreibst du denn dann Werte in die Datenbank? Wie kriegst du neue Objekte in die DB, wenn du keine Property mit Werten füllen kannst?

10.02.2009 - 14:58 Uhr

also so wie's ich jetzt seh gehts grundlegend mal mit pivot. Allerdings kann das Pivot nur fixe Spalten, sodass man wenn man das dynamisch machen will, eine Statement per String zusammenbasteln muss, welches man dann ausführt. Komplett dynamisch gehts wohl nicht.
[daher: auf gelöst gestellt]

06.02.2009 - 07:45 Uhr

Also Pommel um bei einer Lösung zu bleiben, die deinen derzeitigen Wissensstand abdeckt (offensichtlich hast du Listen noch nicht gelernt):
Du könntest diese Arrays die du jetzt hast 2 mal durchgehen:

  1. von 2. Element bis zum letzten und immer schauen, ob das element wo du gerade bist, eine höhere Anzahl gespeichert hat, als das vorher, wenn ja, kannst du das lassen, wenn nicht, setzt du's auf -1. Den letzten gültigen Wert speicherst du dir, und gehst zum nächsten Element. Dann hast du mal bis zum Ende den höchsten Wert gefunden. Jetzt musst du
  2. deine Arrays rückwärts durchgehen und praktisch wieder das selbe machen also schauen ob der Wert eins weiter hinten im array größer ist als der wo du gerade bist, wenn er kleiner ist, wieder auf -1 setzen, sonst lassen (was eigentlich nicht mehr sein kann).

Zum Schluss hast du immer noch deine Arrays aber nur mehr dort wo nicht -1 drinnen steht hast du dein Ergebnis. Wenn du kein Ergebnis hast, weil alle auf -1 sind, ist das ergebnis der erste Wert und die Anzahl ist die Anzahl der Textboxen.

04.02.2009 - 16:38 Uhr

Kannst du aus den vermeindlich falschen Daten nichts rauslesen? Was bedeutet "falsch"
bzw. wie willst du feststellen ob was falsch ist?
Wenn du das irgendwie feststellen kannst, kannst du ja in die DB etwas einbauen, sodass das Insert/Update/Delete nicht geht bzw. evtl. sogar programmatisch eine Exception wirft. Der User/Client der das verursacht wird sich entweder schnell finden oder dann seine Eingaben selbst korrigieren.

Wie kriegst du die Daten in die Datenbank rein? Verwendest du personalisierte Zugriffe in die DB sodass du evtl. den Login irgendwo mitspeichern kannst (z.b. Trigger auf die Tabelle, und die Änderungen in eine eigene Tabelle mit einer Spalte für den User der Daten ändert speichern, sogenannte Journaling-Tabellen)?

04.02.2009 - 16:13 Uhr

Ok, ich gebs auf. Eigentlich meinte ich nur, das man für eine so einfache Aufgabe normalerweise keine Hilfe in Anspruch nehmen sollte. Schließlich ist das Ziel einer solchen Aufgabe ja den Lösungsweg zu finden.
Bei verzwickten Problem kann man nachfragen, aber das wär in dem Beispiel wohl nur der Fall, wenn er keine Arrays und den Namespace System.Collection (und darunterliegende) nicht verwenden darf. Dann würde man wohl länger für ne Lösung brauchen.

Und wenn das keine Hausaufgabe ist, möcht ich das reale Programm sehen, in dem man sowas braucht.

Edit: Ich hätte es wenigsten so formuliert: Wie bekomm ich aus einer Reihe von Werten heraus, welcher Wert am häufigsten verwendet wurde?

Dann hätte auch ich eine Lösung angeboten, weil ich nicht davon ausgegangen wäre, dass es sich um eine Aufgabe handelt.

04.02.2009 - 15:51 Uhr

... geht es hier nur darum Anhaltspunkt für eine eigene Lösung zu bekommen

ich würde ein dictionary nehmen und als key den wert und als value den count benutzen.

@Herbivore: Naja, wie mans sieht. Und bei der Antwort von Jack ist die Lösung praktisch vorgegeben

04.02.2009 - 15:22 Uhr

ich würd anfangen selbst zu denken, oder die mitschüler zu fragen, schließlich kann sichs da nur um eine Übungsaufgabe der Schule handeln

04.02.2009 - 10:16 Uhr

Wenn die Installation von USB Geräten restriktiv gehalten wird, dann ist dass normal.

Das ist normal? Anzeigen als Laufwerk aber keinen Inhalt? Das ist doch Schwachsinn ...

Wie/Wo kann ich das im XP abstellen, sodass jeder User einen USB-Stick anstecken darf? (Is eh nur mein privater Rechner, wo ich halt versch. User zum Arbeiten drauf hab)

04.02.2009 - 09:16 Uhr

Ich hab folgendes Problem auf meinem Rechner:

Ich hab ein paar User angelegt, die keine Admin-Rechte haben, wenn ein solcher User einen USB-Stick ansteckt, sieht er zwar den Stick, aber der Explorer zeigt keine Dateien an, so als wär er leer.
Mit einem Admin-User hab ich kein Problem.

Irgendwer eine Idee?

04.02.2009 - 09:00 Uhr

bin GMLOD's Meinung.
a) musst du dir Return-Codes überlegen die du
b) wieder richtig in Klartext ausgeben musst
c) wenn über sowas, dann mit konstanten, mit denen man auch gleich im Code, ohne ihn zu entschlüsseln, sieht, was da zurückgeliefert wird

Aber eigentlich finds ichs auch unnötig, weil man ja gleich die richtige Exception, mit einer klaren Message throwen kann. Ob der Caller nun den Return-Wert behandelt, oder verschiedene Exceptions (oder nur eine, mit unterschiedlichen Messages) ist eigentlich auch wieder egal und gleich viel arbeit (mit einer Ex-Klasse und versch. Messages sogar weniger). Der Code wird dadurch aber wesentlich lesbarer.

03.02.2009 - 16:24 Uhr

Bin mir jetzt nicht sicher, aber schau Dir mal die Hierarchical WebDataSource an, vielleicht kann die Dir dabei helfen.

glaub nicht, dass das irgendwas damit zu tun hat, zumal ich ja nicht wirklich eine Hierarchie habe, sondern einfach nur eine variabel breite und hohe Ansicht, je nach Anzahl der verwendeten Produkte und Lieferorte

03.02.2009 - 16:21 Uhr

@Jelly:

SELECT * FROM (
	SELECT 1 as Produkt_ID, 1 as Ort_ID, 110 as Soll
	UNION
	SELECT 1 as Produkt_ID, 2 as Ort_ID, 120 as Soll
	UNION
	SELECT 1 as Produkt_ID, 3 as Ort_ID, 130 as Soll
	UNION
	SELECT 2 as Produkt_ID, 1 as Ort_ID, 100 as Soll
	UNION
	SELECT 2 as Produkt_ID, 2 as Ort_ID, 120 as Soll
	UNION
	SELECT 2 as Produkt_ID, 3 as Ort_ID, 130 as Soll
	UNION
	SELECT 3 as Produkt_ID, 5 as Ort_ID, 150 as Soll
	
) d
Pivot ( Sum(Soll) FOR Produkt_ID IN ([1],[2])) as P

da hab ich aber das problem, dass ich das IN ([1],...) so nicht schreiben kann, weil ich gar nicht weiß, was in das IN reingehört, schließlich können da alle möglichen Ort aufscheinen ...

03.02.2009 - 12:52 Uhr

verwendetes Datenbanksystem: <SQLServer 2005/2008>, <dot.NET 3.5>

Ich hab folgende Ausgangslage:

ein auftrag besteht aus verschiedenen gekaufen Produkten, die an verschiedene Orte geliefert werden sollen.
Mein Grundaufbau wäre jetzt:

(AuftragsID), Produkt_ID, Ort_ID, Stk, Preis

Ich muss das ganze jetzt aber in einer Matrix in einer WinForms Anwendung anzeigen und brauche daher eine Ansicht bei einem Auftrag

       || Produkt_ID  || Produkt_ID  || ...
-----------------------------------------------------
Ort_ID || Stk | Preis || Stk | Preis || ...

Gibts da am SQL Server irgendwie eine Möglichkeit, die Daten schon so aufzubereiten? Pivot() - Funktion? Da blick ich nämlich ned ganz durch ob und wie das geht.

Bzw. wenn ich die Daten nicht am SQL Server aufbereiten kann, wie würde ich sie am besten so in ein Grid (Ultragrid-Infragistics) reinbekommen?

03.02.2009 - 12:13 Uhr

Naja, du hast geschrieben, dass du im WF ein Feld setzt. Wenn da aber irgendwie noch mehr dran hängt und das nicht nur DB-Operationen sind, dann würd ich auch SSIS empfehlen. (Ist aber nicht ganz simpel)

03.02.2009 - 11:27 Uhr

reichen da nicht einfache trigger aus?

03.02.2009 - 08:18 Uhr

Wieso muss denn diese Nummer gespeichert werden? Die kann man doch zu jeder Zeit neu generieren.

Weil das eine Datenmigration ist, die Daten die reinkommen zum aktuellen Stand dazugespielt werden und da die Daten natürlich entsprechend aufbereitet werden müssen um der aktuellen Datenbank und -struktur zu entsprechen.

30.01.2009 - 08:19 Uhr
  1. leiharbeiter sind dennoch die ersten die gehen dürfen, sobald es auch nur ansatzweise anfängt zu krieseln.

Für denjenigen kein Problem, weil er ja sowieso über die Firma für die er arbeitet
schnell was neues bekommt (außer natürlich er ist komplett selbstständig)

Richtig ist das natürlich, dass zuerst die Leiharbeiter abgebaut werden, da hätten ja die Angestellten sonst auch kein Verständnis für. Aber abgebaut werden zuerst auch immer die "schlechten" Leiharbeiter.

  1. leiharbeiter haben in einigen firmen schlechtere arbeitsbedingungen.

Das kann man glaub ich nicht verallgemeinern. Vielleicht gibts Einschränkungen in Sachen Security und Rechte, aber vom Klima her, müssten die Leute schon ziemlich bescheuert sein, wenn man als Externer dort schlecht behandelt wird. Dann ist aber sicherlich das Klima selbst dort schlecht.
Habe beides schon erlebt: Ein Büro in dem die Leute die dort tagtäglich arbeiten sich noch "Sie"zten, dort war ich nur 4 Wochen, auf der anderen Seite war ich 7 Monate lang in einer Firma, zu denen hab ich immer noch Kontakt, und werde auf deren private Entwicklertreffen eingeladen.

  1. leiharbeiter werden bei wichtigen software-entscheidungen in vielen firmen nciht angehört oder gar komplett ignoriert.

Kann ich nur bedingt übereinstimmen. Da muss man sich anschauen, was für jemanden und für was (achtung satzbau!) man jemanden nimmt. Jemanden zum Code-Eintippen weil man zuviel zu tun hat aber genau weiß was, wird man nicht mehr fragen. Meist werden aber Spezialisten für irgendwas eingestellt auf die sehr wohl dann auch gehört wird. Ich war mal in einer Firma, eigentlich für einen Teilbereich zuständig, mir sind dann aber so viele Sachen aufgefallen die ich dort erwähnt habe, die bis jetzt niemanden wirklich aufgefallen waren, sodass meine Zuständigkeit dann erweitert wurde uind mein Vertrag verlängert wurde.

Grundsätzlich hängt alles von einem selbst ab. Wie man sich gibt, wie gut man arbeitet etc. Manche wollen gar nicht fix angestellt sein. Andere können nicht anders, weil sie nichts drauf haben (auch schon erlebt), die werden dann halt immer weiter verschoben.

28.01.2009 - 12:56 Uhr

Es geht mir auch nicht unbedingt um die Performance. Ich wollt einfach nur wissen obs da ned vielleicht irgendwie Mittel im SQL Server gibt, das einfacher zu machen. Weiß nicht ob man da ned evtl. Rank() Over(...) oder so benutzen kann.

28.01.2009 - 12:36 Uhr

ich liebe solche Themen ... nichtssagender Titel, kein [gelöst] tag ... wieder 30 sec meines lebens verschwendet ... 😉

21.01.2009 - 20:18 Uhr

Das hast du falsch verstanden mit den 350. Meine maximale Buchungsnummer (innerhalb einer Person) ist 500, bei Nr 350 bin ich nach 15 min, da hab ich aber schon etwa 80% alle Buchungssätze upgedatet. Ich brauch insgesamt etwa 18min.

Index ist mir auch klar, es ging eben nur darum, obs irgendwie besseren Techniken gibt.

21.01.2009 - 19:59 Uhr

also die Variante mit dem Cursor ist sicher nicht schneller, da würd ich jeden Datensatz einzeln updaten, das geht gar nicht, das dauert ewig ...

21.01.2009 - 14:50 Uhr

verwendetes Datenbanksystem: <SQL Server 2005>

Ich habe eine Buchungstabelle:
BuchungsID (=Autowert), PersonID, BuchungsBetrag

Ich erweitere die Tabelle um BuchNr. Diese Nummer soll innerhalb einer Person fortlaufend sein.

Also:
1 P1 100€ BuchNr=1
2 P1 232€ BuchNr=2
3 P2 293€ BuchNr=1
4 P2 293€ BuchNr=2
5 P2 392€ BuchNr=3
6 P3 627€ BuchNr=1

wie schaff ich das möglichst schnell in einer Tabelle mit etwa 3 Mio Einträgen, in der die maximale BuchNr 500 sein wird?
Mein Ansatz war hier, aber das dauert bei mir nun schon etwa 15 min und ich bin gerade erst bei Nr 350.

21.01.2009 - 11:42 Uhr

hm, mein Fehler. Funktionert alles wunderbar. Ich hatte da einen kleinen Denkfehler:

Aber evtl. weiß wer, wie und ob man sowas im GhostDoc einstellen kann:

 public MissingPropertiesException(string message, Exception inner)
    : base(message, inner)
 {
 }

kann ich irgendwie eine Doku generieren lassen, sodass für message und inner die Beschreibung aus dem base - Konstruktor übernommen wird?

20.01.2009 - 17:08 Uhr

grundsätzlich gesprochen JA. Aber es gibt Abhilfe. Wenn Du z.B. GhostDoc verwendest, dann kannst Du Dir ein XML-Kommentarblock generieren lassen. Sollte GhostDoc nun bemerken, dass die Methode im Interface bzw. von einer Vaterklasse stammt, so übernimmt er den gleichen Kommentar.

Hast du da ein fertiges GhostDoc.Config dafür? Hab mir grad Ghost-Doc für 2005 installiert und da ist das nicht so, da werden normal standard kommentare genereriert, wenn ich z.B. eine ExceptionKlasse dokumentiere die von Exception ableitet.

20.01.2009 - 13:09 Uhr

ich kann mir nicht vorstellen, dass "ValueMember" das richtige ist ...

14.01.2009 - 10:30 Uhr

... was wohl die Antwort auf diese Frage sein wird ... (siehe Anhang)

22.12.2008 - 12:22 Uhr

z.B:

abstract DBServer
{
   ...
   /// <summary>
   /// Converts a standard .NET-Type to a database depending datatype
   /// </summary>
   /// <param name="t">The standard .NET-Type</param>
   /// <returns>A database depending datatype</returns>
   public abstract object ConvertNetTypeToDatabaseType(System.Type t);
   ...
}

class SQLServer : DBServer
{
    ...
    /// <summary>
    /// <see cref="Active.DataAccess.Common.DbServer.ConvertNetTypeToDatabaseType"/>
    /// </summary>
   public override object ConvertNetTypeToDatabaseType(Type t)
   {
      ...
   }
}

Wie würde ich die ausimplementierte Method im SQLServer.cs kommentieren ohne alles neu eingeben zu müssen?
In jedem <param> dann <see> reinzuschreiben bringt mir gar nix. Dann auf den richtigen Member linken ist mehr Arbeit als einfach rüberkopieren (wobei kopieren natpürlich seine Nachteilehat)
Das ganze müsste so aufgebaut sein, dass man mit nur einem Tag alles von der Basis-Klasse übernehmen kann. (Wenn man dann die Parameter in der Ableitung anders nennt, selber schuld)

Das Problem ist, das ich mit "<see>" ja immer nur verlinken kann, ich will aber einfach den Text von der Basisklasse dann auch in der Ableitung direkt stehen haben.
Außerdem müsst ich auch wieder jeden Methoden-Parameter extra verlinken (da weiß ich gar nicht ob das geht).
Das Sandcastle (1.7.0.0) erzeugt mir nämlich jetzt bei "t" einen "Missing"-Eintrag.

Rein vom Studio würde es so zumindest keine Warnings erzeugen.

22.12.2008 - 12:13 Uhr

Hm, also ich meine das wird wohl nicht gehen, weil die Basis-Klasse das Feld "braucht", da kannst du's nicht in der Kind Klasse einfach wegnehmen, sonst kann er die Basis-Klasse beim Deserialize wohl nicht mehr herstellen.

(ist aber nur eine Annahme)

22.12.2008 - 12:04 Uhr

Ich hab auch nix gegen Peters Variante gesagt, aber im Grunde ist es das selbe, und wenn er den Wertebereich erhöhen muss, kanns passieren, dass manche User das nicht mehr schaffen. Viele leute können nämlich 23+69 nicht im Kopf rechnen. Geschweige denn 9*6 oder sowas.

Ich finde es als Variante dzt. sehr gut, und wenn Peter sagt, dass er bis jetzt keinen Spam damit bekommen hat, werd ich die wohl einsetzen. Ich probier aber dzt. einfach nur Alternativen zu finden.

Die 5er Variante ist in etwa die Implementierung von Jacks Kommentar: "was aber gut funktionieren dürfte, wäre ein bild zum anzeigen und dann in der combobox die frage: was ist das? wobei man dann den string auswählen muss. ist zwar nciht barrierefrei aber welches captcha ist das schon...".

Grundsätzlich bleibt für mich die Erkenntnis, dass man
a) immer eine Eingabe braucht und
b) es eine Eingabe sein muss, wo man nicht etwas reinschreibt mit den man mit n-Versuchen irgendwann reinkommt.
c) es aus a) und b) dann eigentlich nur die "normalen" Text/Zahlen-Captchas sein können, bei denen die Erkennung wohl aber schon so fortgeschritten ist, dass sie auch nicht mehr sicher sind
d) Mir nichts mehr einfällt, was man als Alternative nehmen kann, das auch der dümmste User kapiert und schnell eingeben kann.

22.12.2008 - 11:20 Uhr

Du musst das Interface IRequiresSessionState (schreibend) oder (nur lesend) IReadOnlySessionState bei deinem Handler implementieren

und da gehts auch schon ... Besten Dank

Wenn das Ergebnis immer von dir vorgegeben wird, sollst du dich nicht wundern. Da ist die Variante von Peter (Addition von beliebigen Zahlen) besser dran.

Nicht wirklich viel, weil man, wenn man immer mit der selben Zahl (zb 10) reingeht, irgendwann auch das richtige Ergebnis trifft.

22.12.2008 - 11:06 Uhr

Ich stell die Captchas auf Http-Handler um, wie Peter gemeint hat.

Da ich den Handler tats. als reinen Bild-Zeichner verwende und die notwendigen Captcha-Daten in der Seite ermittle, speichere ich die notwendigen Daten des Captchas in eine Instanz einer Klasse die ich in der .aspx-Seite in die Session schreib.

Allerdings kann ich vom Handler anscheinend nicht auf diese Session zugreifen, da ich über context.Session immer ein Null bekomme.

Was muss ich tun, bzw. wohin muss ich die Daten in der .aspx-Seite speichern um im Handler drauf zu greifen zu können?

22.12.2008 - 10:00 Uhr

Muss ich jetzt, um die Dokumentation vollständig zu haben die Methode nochmal kommentieren, oder wie?
Ja, leider.

*grml*

Steh vor dem selben Problem. Ohne externe Dokumentationsprogramme steht man da voll an. Weiß da wer, ob da Sandcastle evtl. irgendwelche Tags kennt die das übernehmen würden bzw. ob im VS2008 da irgendwie Abhilfe geschaffen wird?

19.12.2008 - 14:17 Uhr

http://www.krasinger.at/SimpleTestWeb/Captcha5.aspx

Wobei mir die Variante nicht gut gefällt, da man irgendwann zufällig reinkommt, wenn man halt immer eine Variante wählt. Vielleicht hat wer eine Idee wie man das verhindern kann?

Bei Auswahlen haben ich immer das Problem, dass jemand irgendwann das richtige trifft, also kommt man eigentlich um eine Eingabe nicht herum ...

18.12.2008 - 14:39 Uhr

Man müsste eher sowas wie einen Rebus bauen. D.h. 2-3 Bilder nebeinander und der User muss eingeben was er sieht.

als z.B ein R zeichnen und danebein eine Eistüte. Ergibt: Reis.

Allerdings fürchte ich, dass das viele User gar nicht mehr checken werden ...

Das Thema ist gar nicht so einfach, v.a. wenn ich seh, dass manche Seiten Captchas haben und trotzdem zugespamt werden.

18.12.2008 - 14:35 Uhr

edit: was aber gut funktionieren dürfte, wäre ein bild zum anzeigen und dann in der combobox die frage: was ist das? wobei man dann den string auswählen muss. ist zwar nciht barrierefrei aber welches captcha ist das schon...

Das hat ich auch schon mal gedacht, aber da brauchst du ja auch nur einfach alle Bilder abspeichern hast auch relativ bald die Antwort herausen.
Da müsste man echt hergehen und das Bild in seinen Bit/Byte bestand-Teilen so verändern, dass immer ein anderes Bild herauskommt, das trotzdem für den User eindeutig identifizierbar ist.

18.12.2008 - 14:26 Uhr

da finde ich die geschichte mit den bildern besser, da textparsen so ziemlich das einfachste und perfomanteste ist, was man einsetzten kann. bei bildern ist der schwierigkeitsgrad um einiges höher und somit auch schon die hürde.

du meinst, wenn ich alle Texte durch Bilder ersetze - die Combo dann durch eine RadioButton-Auswahl - wärs besser? Klar, aber das konnte ich auf die schnelle ned umsetzen, so viele hübsche Bilder find ich ned.

Ich mein das Textparsen gut und schön, aber man muss ja trotzdem noch wissen, was man mit dem geparsten Text macht.

18.12.2008 - 13:13 Uhr

hallo,
wie realisiert man am besten javascript:history.back() in asp.net mit C#

danke

<asp:Button runat="server" OnClientClick="javascript:history.back();" Text="Back" ID="btnBack"/>

??

18.12.2008 - 11:52 Uhr

das kann man doch einfach im Geräte-Manager abstellen ...