Ich versuche gerade diese PHP Funktion in C# zu konvertieren:
$z = hexdec(80000000);
habs so versucht:
int z;
z = int.Parse("80000000", System.Globalization.NumberStyles.HexNumber);
da kommt für z das hier raus:
-2147483648
Bei der PHP Funktion kommt jedoch:
214748364821474836482147483648214748364821474836482147483648214748364821474836482147483648214748364821474836482147483648214748364821474836482147483648214748364821474836482147483648
heraus und genau das bräuchte ich auch. Hab schon versucht z als decimal zu deklarieren aber dann bekomm ich mit decimal.parse einen error (no float types supported)
Danke!
Ok funktioniert mit dem Reader.
Danke.
Ok, dann hab ich wohl eher ein Problem das auzulesen 😮, brauch ich dafür einen DataReader oder wie geh ich in dem Fall vor? Hatte es so probiert aber das kann ja gar nicht funktionieren.
cn = FnMySQL.CnOpen();
cmd.Connection = cn;
cmd.CommandText = "SELECT type, count(*) FROM sites WHERE Show='1' GROUP BY type";
int RowCount = Int32.Parse(cmd.ExecuteScalar().ToString());
Hi danke, aber dann bekomm ich nur die Gesamtzahl heraus oder?
Ich weis nicht wieviele von Type 0, wieviel von Type 1 etc..
= 11 Queries, geht es irgendwie sparsamer?
Ich hab 11 verschiedene Types. z.B. Query:
SELECT COUNT() FROM table WHERE Type='0' AND Show='1';
SELECT COUNT() FROM table WHERE Type='1' AND Show='1';
SELECT COUNT() FROM table WHERE Type='2' AND Show='1';
etc. bis 11. Benutze MySQL.
Danke!
Original von tomaten
Ich speicher den Wert sofort beim ersten Aufruf der Url in einer Session Variablen und nur dann, wenn diese Null ist. Danach kann der User da ändern, was er will, es ist zu spät 🙂 !
und wenn der jenige schon vor dem Aufruf von asdf.aspx?ID=x den ID Wert ändert?
Ich hab eine HTML Table die sich dynamisch in der codebehind erzeugt mit folgenden Links (bsp):
<a href="asdf.aspx?ID=1"></a>
<a href="asdf.aspx?ID=2"></a>
etc.
Nun will ich verhindern dass jemand die Zahl bei ID einfach austauscht und da z.B. 9 einträgt, weil er dann einen Datensatz bekommt den er gar nicht sehn soll.
In php würde ich sowas wahrscheinlich mit hidden FormFields machen aber das ist auch nicht grad die beste Lösung.
Weis jemand Rat?
Weis jemand wie man den PageRank einer gewünschten Seite in ASP.NET berechnet oder wo es Infos dazu gibt?
Danke!
Es geht doch nicht ganz..
System.InvalidOperationException was unhandled
Message="Cross-thread operation not valid: Control 'BoxConfiguration' accessed from a thread other than the thread it was created on."
Source="System.Windows.Forms"
Stimmt, das geht, danke! 🙂
Trotzdem wäre noch interessant ob es generell möglich ist Close Events einer anderen Form abzufangen 😮
Danke und Gruß
Und wie genau kann ich das abfangen?
Habs mit
private void SettingsForm_Close(object sender, EventArgs e)
{
string asd = "ASDAS";
}
oder
private void SettingsForm_FormClosing(object sender, FormClosingEventArgs e)
{
string asd = "ASDAS";
}
auf Form1 probiert aber da springt er nicht rein..
Ich hab 2 Forms: Form1 und SettingsForm.
In der SettingsForm trage ich verschiedene Einstellungen ein, wenn ich dort nun auf "Save" klicke, wird ein neuer XML Eintrag geschrieben und die SettingsForm schließt sich.
Die Combobox auf Form1 enthält Inhalte dieser XML Datei. Somit ist die Combobox nicht auf dem aktuellen Stand wenn sich SettingsForm schließt, erst wenn ich das Programm neu starten würde. Gibts eine Möglichkeit die Combobox auf Form1 zu aktualisieren?
Sowas wie z.B. On SettingsForm_Close?
Okay vielen Dank, klappt!
Hi Friedel,
also ich hab nun Serialize so zusagen als Subroutine von Form1.cs definiert
public static void Serialize(string file, Configurations c)
{
System.Xml.Serialization.XmlSerializer xs
= new System.Xml.Serialization.XmlSerializer(c.GetType());
StreamWriter writer = File.CreateText(file);
xs.Serialize(writer, c);
writer.Flush();
writer.Close();
}
Und respektive Configurations.Serialize("test.xml", conf); in Serialize("test.xml", conf); geändert.
Leider sieht die XML File immer noch so aus 😮
<?xml version="1.0" encoding="utf-8"?>
<Configurations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ConfigurationList>
<Configuration>
<Name>Default Configuration</Name>
<Destination>TEST2</Destination>
<Host>TEST1</Host>
</Configuration>
<Configuration>
<Name>Default Configuration</Name>
<Destination>TEST2</Destination>
<Host>TEST1</Host>
</Configuration>
</ConfigurationList>
</Configurations>
Also 2x das gleiche, hast du noch eine Idee?
Vielen Dank für die nette Hilfe!
Vielen Dank nochmal, ich häng jetzt wohl nur noch an einem kleinen Prob:
So siehts nun aus:
[Serializable]
public class Configurations
{
private System.Collections.ArrayList configurations;
public Configurations()
{
this.configurations=new ArrayList();
}
[XmlArrayItem(Type=typeof(Configuration),IsNullable = false)]
public ArrayList ConfigurationList
{
get{return this.configurations;}
set{this.configurations=value;}
}
public static Configurations Deserialize(string file)
{
System.Xml.Serialization.XmlSerializer xs
= new System.Xml.Serialization.XmlSerializer(
typeof(Configurations));
StreamReader reader = File.OpenText(file);
Configurations c = (Configurations)xs.Deserialize(reader);
reader.Close();
return c;
}
public static void Serialize(string file, Configurations c)
{
System.Xml.Serialization.XmlSerializer xs
= new System.Xml.Serialization.XmlSerializer(c.GetType());
StreamWriter writer = File.CreateText(file);
xs.Serialize(writer, c);
writer.Flush();
writer.Close();
}
}
Jetzt führe ich folgenden Test aus und die XML File beinhaltet dann aber leider 2x das selbe, es sind zwar zwei Datensätze aber 2x mit der Value TEST1 und TEST2:
// Create a new configuration object
// and initialize some variables
Configuration c = new Configuration();
c.Host = "asssf";
c.Destination = "xxxxx";
Configurations conf = new Configurations();
conf.ConfigurationList.Add(c);
c.Host = "TEST1";
c.Destination = "TEST2";
conf.ConfigurationList.Add(c);
Configurations.Serialize("test.xml", conf);
Er replaced dann "assssf" und "xxxxx" mit TEST1 und TEST2. Also trotz dessen dass der index beim ersten 0 ist und beim zweiten 1. Also ich hab nun zwei Datensätze in der XML File aber zweimal das selbe. Sorry ich tu mir generell noch ein wenig schwer 😮 Wie würdest du das dann korrekt zur ConfigurationList hinzufügen?
Vielen Dank!
Original von Friedel
Hallo Paulo,dann solltest du eine Liste (ArrayList) aller vorhandenen Configuration-Instanzen anlegen und diese serialisieren/deserialisieren.
Dazu musst du diese Liste in einer Klasse (z.B. Configurations) anlegen, die Liste als öffentliche Eigenschaft der Klasse verfügbar machen (get/set), über den Acessor den Typ der Liste bekannt machen (z.B.:[XmlArrayItem(Type=typeof(Configuration),IsNullable = false) ]) und dann diese Klasse serialisieren/deserialisieren.Gruss
Friedel
Hi und danke für deine Antwort.
Also, das ist bei mir im Moment Configuration.cs:
[Serializable]
public class Configuration
{
string _Name;
string _Destination;
string _Host;
public Configuration()
{
_Name = "Default Configuration";
_Destination = String.Empty;
_Host = String.Empty;
}
public Configuration[] Configurations;
public static void Serialize(string file, Configuration c)
{
System.Xml.Serialization.XmlSerializer xs
= new System.Xml.Serialization.XmlSerializer(c.GetType());
StreamWriter writer = File.CreateText(file);
xs.Serialize(writer, c);
writer.Flush();
writer.Close();
}
public static Configuration Deserialize(string file)
{
System.Xml.Serialization.XmlSerializer xs
= new System.Xml.Serialization.XmlSerializer(
typeof(Configuration));
StreamReader reader = File.OpenText(file);
Configuration c = (Configuration)xs.Deserialize(reader);
reader.Close();
return c;
}
public string Name
{
get { return _Name; }
set { _Name = value; }
}
public string Destination
{
get { return _Destination; }
set { _Destination = value; }
}
public string Host
{
get { return _Host; }
set { _Host = value; }
}
}
Wenn ich dich richtig verstanden habe, packe ich diese properties jetzt alle in eine ArrayList(public) die ich dann serialisiere/deserialisiere. Aber wie genau komm ich dann an einen gewünschten Eintrag, z.B. ein Eintrag mit Name=xxx o.ä.
Vielen Dank!
Edit: Spontifixus: Genau so hab ich mir meine XML Datei vorgestellt, mir fehlts nur noch an der genauen Umsetzung für erstellen und auslesen 😮
Hi,
es geht um eine Config Datei für meine Applikation die verschiedene "Profiles" haben soll. Also Konfiguration A, B,C etc. auswählbar.
ich hab eine Serialize Klasse geschrieben die hat hauptsächlich 2 Funktionen:
public static void Serialize(string file, Configuration c)
{
System.Xml.Serialization.XmlSerializer xs
= new System.Xml.Serialization.XmlSerializer(c.GetType());
StreamWriter writer = File.CreateText(file);
xs.Serialize(writer, c);
writer.Flush();
writer.Close();
}
public static Configuration Deserialize(string file)
{
System.Xml.Serialization.XmlSerializer xs
= new System.Xml.Serialization.XmlSerializer(
typeof(Configuration));
StreamReader reader = File.OpenText(file);
Configuration c = (Configuration)xs.Deserialize(reader);
reader.Close();
return c;
}
Geschrieben hab ich die XML File so:
Create a new configuration object
and initialize some variables
Configuration c = new Configuration();
c.Host = "asssf";
c.Destination = "xxxxx";
Das funktioniert wunderbar. Die Frage ist jetzt, wie erreiche ich es, dass wenn ich eine neue Konfiguration erstelle er nicht die existierende überschreibt sondern die neue unter neuem Namen hinzufügt?
Die XML Datei sieht so aus:
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<Name>Default Configuration</Name>
<Destination>xxxxx</Destination>
<Host>asssf</Host>
</Configuration>
Die Informationen dort werden leider immer überschrieben, ich würde aber gerne hinzufügen anstatt überschreiben.
Geht das?
Danke!
Hat den schon wer gefunden? Hab von MSDN die Developer Edition installiert aber kann den Enterprise Manager nicht finden..
Gibts denn eigentlich keine Möglichkeit die Oberfläche dabei nicht zu blockieren?
Danke, etwa so?
FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5");
Das Problem dabei, ich kann es nicht mit einem Hash Code machn denn es sind 2 verschieden Systeme.
Der eine PC generiert einen Code und der andere PC muss mit der gleichen Methode den gleichen Code generieren.
Kennt da jemand eine elegante Lösung?
Dankeschön!
Hab jetzt schon alle Variationen probiert aber ich find nicht die richtige, ich möchte prüfen ob mein object vom Typ System.DateTime ist.
object Value wird irgendwann im Code gesetzt, dann:
if (typeof(Value) == System.DateTime)
{
}
So gehts leider nicht, mit Value.GetType auch nicht.. wie macht man das korrekt?
Danke!
Hm stimmt habs auch grad gemerkt, das "Item" in VB ist eigentlich für die Füße 😠
In Visual Basic gibt es:
Page.Session.Item("CC") = CC
Das übergibt das komplette Objekt CC an die Session
In CSHARP gibt es kein Page.Session.Item nur Page.Session.Add und das kann kein komplettes Objekt übergeben. Gibts eine Möglichkeit in C# das komplette Objekt zu übergeben?
Danke!
Danke, das heißt also man benutzt so ein Control wenn man mehrere Controls miteinander vereinen will? Mir ist nur noch nicht klar warum man ein Button Control und eine Textbox zu einem Control zusammenfassen möchte. Schreibt man dann etwas auf einen Button und das wird auch noch ausgewertet wenn man ihn klickt? 😮
Ich hab folgenden Code gefunden:
public class CompositeControl : Panel
{
protected override void CreateChildControls()
{
base.CreateChildControls();
this.ID = "myID";
Label lbl = new Label();
lbl.ID = "innerID";
lbl.Text = "This text is the meat of this control.";
this.Controls.Add(lbl);
}
}
Das sieht interessant aus aber ich hab keine Ahnung was das sein soll bzw. wie ich es verwende. Ich hab z.B. den Schnippsel mal in die Codebehind von Default.aspx geschrieben aber leider passiert gar nichts..
Vielen Dank für jegliche Hilfe mich aufzuklären 😮!
'SystemMonitor.Configuration.NotifierElementCollection.CollectionType': cannot change access modifiers when overriding 'public' inherited member 'System.Configuration.ConfigrationElementCollection.CollectionType'
protected override ConfigurationElementCollectionType CollectionType
{
get { return ConfigurationElementCollectionType.BasicMapAlternate; }
}
Ich hab leider keine Ahnung was das bedeutet bzw. wie ich es behebe
Danke, das heißt den Authentikationstyp (z.B. Admin) leg ich lieber in einer Session ab, da ist es sicher?
Ich hab ein HttpCookie in dem steht:
Authenticated
user=test&type=Guest
localhost/
1024
229214976
29744044
3153017808
29741227
*
Nun scheint es dummerweise möglich zu sein, type=Guest einfach durch type=Admin zu ersetzen. Genauso gut könnte man den user=test mit user=Admin ersetzen (sofern es das natürlich gibt etc.).
Das würde Usern ermöglichen ziemlich leicht Admin Rechte zu bekommen oder sich als anderer User auszugeben.
Was kann man generell gegen diese Problematik machen? Was soll ich im Cookie speichern damit ich weis welcher Benutzer es ist ohne dass er das Cookie einfach für seine Zwecke modifizieren kann?
Danke!
Original von Noodles
Was hast Du denn überhaupt vor?
Ist vielleicht ein DataGrid ein Alternative?
Nein, eigentlich nicht, denn die Tabelle wird später dynamisch erzeugt und ist an ein CMS gekoppelt.
Es geht eigentlich nur darum, ich hab z.B. diesen Tabellenausschnitt in der Codebehind:
sb.Append("<table summary=\"Ihre Daten\">");
sb.Append("<caption>Ihre Daten</caption>");
sb.Append("<thead>");
sb.Append("<tr>");
sb.Append("<th scope=\"col\">Info</th>");
sb.Append("<th scope=\"col\">Value</th>");
sb.Append("</tr>");
sb.Append("</thead>");
sb.Append("<tfoot>");
sb.Append("<tr>");
sb.Append("<th scope=\"row\"></th>");
sb.Append("<td colspan=\"4\">");
---------> sb.Append(ph + "editieren</td>");
sb.Append("</tr>");
sb.Append("</tfoot>");
sb.Append("<tbody>");
An der Stelle mit dem Pfeil würde ich gern ein ASP.NET Control einfügen, nämlich den LinkButton damit ich das Event dann abfangen kann wenn jemand darauf klickt.
Oder ist das generell nicht möglich?
Danke!
Du meinst im Designer?
Das Problem ist ja, ich müsste die Stelle im codebehind festlegen, also genau hier:
sb.Append(ph + "editieren</td>");
Denn die Tabelle wird komplett in der codebehind erzeugt und das Control soll an einen Platz in der Tabelle..
Wenn ich den PlaceHolder jetzt im Designer setze, kann ich ihn ja nicht direkt an die gewünschte Stelle in der Tabelle setzen..
Danke für deine Antwort.
Hm
PlaceHolder ph = new PlaceHolder();
protected void Page_Load(object sender, EventArgs e){
CreateFillTable(sb);
LinkButton asd = new LinkButton();
asd.Text = "ASD";
ph.Controls.Add(asd);
}
protected System.Text.StringBuilder CreateFillTable(System.Text.StringBuilder sb)
{
sb.Append("<table summary=\"Ihre Daten\">");
sb.Append("<caption>Ihre Daten</caption>");
sb.Append("<thead>");
sb.Append("<tr>");
sb.Append("<th scope=\"col\">Info</th>");
sb.Append("<th scope=\"col\">Value</th>");
sb.Append("</tr>");
sb.Append("</thead>");
sb.Append("<tfoot>");
sb.Append("<tr>");
sb.Append("<th scope=\"row\"></th>");
sb.Append("<td colspan=\"4\">");
sb.Append(ph + "editieren</td>");
sb.Append("</tr>");
sb.Append("</tfoot>");
sb.Append("<tbody>");
}
Da kommt nur folgender Text bei raus:
System.Web.UI.WebControls.PlaceHoldereditieren
Was mach ich falsch?
protected System.Text.StringBuilder CreateFillTable(System.Text.StringBuilder sb)
{
LinkButton lb = new LinkButton();
lb.Enabled = true;
lb.Text = "ASDFASF";
sb.Append("<table summary=\"Ihre Daten\">");
sb.Append("<caption>Ihre Daten</caption>");
sb.Append("<thead>");
sb.Append("<tr>");
sb.Append("<th scope=\"col\">Info</th>");
sb.Append("<th scope=\"col\">Value</th>");
sb.Append("</tr>");
sb.Append("</thead>");
sb.Append("<tfoot>");
sb.Append("<tr>");
sb.Append("<th scope=\"row\"></th>");
sb.Append("<td colspan=\"4\">");
Controls.Add(lb);
sb.Append("editieren</td>");
sb.Append("</tr>");
sb.Append("</tfoot>");
sb.Append("<tbody>");
Control.Add(lb); geht natürlich leider nicht:
Control 'ctl01' of type 'LinkButton' must be placed inside a form tag with runat=server.
Außerdem wärs wahrscheinlich sowieso an der falschen Stelle. Weis jemand wie man solche Controls korrekt in der Codebehind erstellt und auch noch an die richtige Stelle bekommt wenn man einen Stringbuilder benutzt?
Danke!
Also ich hab jetzt alle verschiedenen Möglichkeiten probiert, ich find keinen Weg bei der Klassen Instanz gleich einen Parameter mit zu übergeben.. ich hänge leider fest 😠
Original von cadi
Warum rufst du GetCookie() nicht im einfach constructor von Cookie auf?public Cookie() { this.GetCookie(); }
Dann hat jede instanz eines Cookie objectes initialisierte Werte.
Ja das dachte ich mir auch erst, aber GetCookie(string CookieName) <- hat einen Parameter und den kann ich dann nicht übergeben..
Was ich erreichen will ist, dass ich die Cookie Methode auch unabhängig benutzen kann, also dass ich cookieUser und cookieType überall erfragen kann. Jetzt ist nur die Frage ob ich das so korrekt gemacht hab. Das Problem z.B. ist, wenn ich die Cookie Klasse instanziere und vergesse GetCookie() aufzurufen, sind die beiden Strings die dort gesetzt werden wohl leer. Eigentlich sollte man die gar nicht callen können bevor GetCookie() nicht aufgerufen wurde.
Für ein wenig Hilfe wäre ich sehr dankbar!
Ich hab eine Class File Namens auth.cs.
In dieser Klasse auth hab ich folgende Methode:
public class auth
{
..code hier..
public static string CheckAuthentication()
{
Cookie c = new Cookie();
if (c.GetCookie("Authenticated") == false)
{
_Authenticated = enAuthenticated.Guest;
}
else
{
switch (c.cookieType)
{
case "Admin":
_Authenticated = enAuthenticated.Admin;
break;
case "Customer":
_Authenticated = enAuthenticated.Customer;
break;
default:
_Authenticated = enAuthenticated.Guest;
break;
}
}
return _Authenticated.ToString();
}
}
diese Methode ruft also die Methode der Klasse Cookie auf:
public class Cookie
{
string iCookieUser;
string iCookieType;
public string cookieUser
{
get { return iCookieUser; }
set { iCookieUser = value; }
}
public string cookieType
{
get { return iCookieType; }
set { iCookieType = value; }
}
public bool GetCookie(string CookieName)
{
HttpCookie cook = HttpContext.Current.Request.Cookies[CookieName];
if (cook == null)
{
return false;
}
else
{
cookieUser = cook.Values["user"].ToString();
cookieType = cook.Values["type"].ToString();
}
return true;
}
}
Ich meinte anstatt:
public int Gewicht
{
get { return iGewicht; }
set { iGewicht = value; }
}
so:
public int Gewicht;
......
Gewicht = 3;
Du meinst warum man nicht einfach Gewicht = 123; benutzt?
Original von -acid-
Fehlt die auch in andren Projekten? Weil bei mir (WindowsApp) ist sie da...
Bei meinem WindowsApp ist sie auch da, aber beim WebProjekt fehlt sie..
Das Build wird gar nicht gezählt sondern muss manuell inkrementiert werden.
..blöde Frage, wo ist die assembly.cs in Visual Studio 2005 Beta2 (Web Projekt) abgeblieben? Oder muss man die nun selbst erstellen?
Kennt jemand einen guten WYSISYG Editor den man in seine ASP.NET Applikation einbinden kann?
Original von FZelle
Nur so eine Frage, warum kein DataSet, wenn Du schon mit Datenbanken arbeitest?
Ehrlich gesagt hab ich noch nie mit einem DataSet gearbeitet und wüsste auch nicht wie ich es anwende. Ich meide im Prinzip einige ASP.NET build in Features wie DataList und DataGrid weil sie mir meiner Meinung nach zu wenig Kontrolle bieten.
Für eine kurze Erklärung bzgl. eines DataSets in dem obigen Zusammenhang wäre ich dir dennoch dankbar!
Grüße
Im Moment hab ichs so:
ArrayList sAlbum = new ArrayList();
ArrayList sFolder = new ArrayList();
ArrayList iOrder = new ArrayList();
while (dr.Read() == true)
{
sAlbum.Add(dr["Album"].ToString());
sFolder.Add(dr["Folder"].ToString());
iOrder.Add(Int32.Parse(dr["Order"].ToString()));
}
aber scheinbar ist ja ArrayList eher langsam?
Vorher hab ichs etwa so versucht:
string[] sAlbum;
string[] sFolder;
string[] iOrder;
int i = 0
while (dr.Read() == true)
{
sAlbum[i] = dr["Album"].ToString();
sFolder[i] = dr["Folder"].ToString();
iOrder[i] = dr["Order"].ToString());
i++
}
Das funktionierte jedoch nicht, weil ich dafür die Dimension wissen müsste was eine zusätzliche Query erforderlich machen würde. Also der Compiler verlangt string[] salbum = new String[3] (z.B.)
Kann ich das irgendwie umgehn oder gibts einen besseren Weg? Danke![/csharp]
Sorry, dass ich nochmal frage, aber ich habs nun so gemacht
Graphics grfxObj;
System.Drawing.Image img = System.Drawing.Image.FromFile(myThumbPath);
grfxObj = Graphics.FromImage(img);
grfxObj.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
grfxObj.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
grfxObj.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
grfxObj.DrawImage(img, 0, 0, 150, 113);
und erkenne ehrlich gesagt keinen Unterschied. (150 width 113 height ist atm. standard thumbnail size).
War das so richtig?
Danke!