Kritiker schrieb:
Anonyme Methoden einen Ansatz zur funktionalen Programmierung bieten sollten, und dass nun doch ganz übernommen wird, 2 Sprachmittel für das selbe Ergebniss (bitte jetzt keine Beispiele ala: Es gibt ja auch for und while Schleifen, sowas spielt meiner Meinung nach in einer anderen Liga ..)
Beide sind miteinander kompatibel, was aber noch lange nicht bedeutet, dass sie gleichwertig sind. Die Lambdas aus C# 3.0 sind mächtiger als die anonymen Delegaten. Sie lassen sich nämlich in ASTs zerlegen. Auch die Rückübersetzung von AST zu Lambda wird wohl möglich sein. (Ist aber leider im Spec nicht genau beschrieben). Daraus resultiert auch die ganze "Magie", die hinter LINQ steckt, um deinen Code z.B. in gleichwertige SQL, XPath Kommandos umzuwandeln. Auch für genetische Programmierung und polymorphe Algorithmen könnte man das nutzen (auch wenn das jetzt zwei eher abgehobene Beispiele sind ).
Kritiker schrieb:
Man doch genau so gut gleich für diese wenigen Klassen eine funktionale Sprache verwenden könnte, wozu gibt es denn F# und Co? Warum eine Universal-Sprache entwickeln, die letztendlich überquillt an Features?
Ich selbst habe überwiegend gute Erfahrungen mit Misch-Sprachen gemacht. Also die imperativ und funktional sind. Nimm Phyton mal einfach als Beispiel, dort funktioniert das wunderbar...
rizi2 schrieb:
noname23 schrieb:
und es gibt keine möglichkeit eine .exe datei (wie in c++) zu machen,
die auf allen rechnern läuft auch ohne .net framework?
mfg
nein,die gibt es nicht, denn die .exe datei wir erst vom jit(just in time kompiler) interpretiert und dazu braucht man das .net framework, ähnlich wie bei java
lg
rizi
Da wird nichts interpretiert, der Zwischencode wird kompiliert in Maschienencode und dann ausgeführt!
Und zur anderen Frage. Nein es geht nicht! Entspricht auch nicht dem Sinn des .Net Frameworks. Es gibt zwar Linker von Dritthertellern die die entsprechenden Dll's mit dazulinken, aber wer sowas versucht hat in der Regel den Sinn eines Frameworks nicht verstanden.
Talla schrieb:
robmir schrieb:
hallo,
1. wie kann ich unter .net c++ ein string in String umwandeln?
Die sind synonym in .Net. "string" ist nur nen Verweiß auf die CLR Klasse "String"
Das ist in C# so, dass "string" ein Alias für "System.String" ist. In VB ist "String" ein Alias für "System.String" und in C++/CLI gibt es glaube ich keines, sondern man muss wie sonst auch den Namen usen oder qualifizieren.
Es gibt System.String-Konstruktoren (http://msdn2.microsoft.com/en-us/library/8s83eyw9(en-US,VS.80).aspx), die ein Byte-Array bei gegebener Kodierung umwandeln können. Man beachte, dass ein C++-char ein Byte ist. Damit ist char[] -> System::String schon mal klar. Die Kodierung von char[] in C++ weiß ich nicht, wovon die abhängt. Bei mir hängt sie davon ab, in welcher Kodierung ich den Quelltext speichere.
std::string kannst du so genauso umwandeln, denn du kannst einen zeiger auf das interne char[] getten.
Hab die Plugins jetzt mit in den Ordner des Hauptprogramms gepackt .. und ... es funktioniert alles super. Danke für den Denkanstoß
Wenn aber noch jemand ne Idee hat, wie ich das auch in verschiedenen Verzeichnissen zum Laufen bekomme, bin ich dafür offen
Danke Leuts.
Greetz :xmas1:
FileListItem **castedItems = new FileListItem*[List->get_Count()];
so siehts glaub ich richtig aus, wenn du ein FileListItem** willst.
ich muss dazu sagen, dass ich das nur aus C++ kenne und von MS Java aus prinzip keine ahnung habe.
xs2007 schrieb:
Nach mehrstündigem aufenthalt in der msdn Library hab ich nun rausgefunden, dass der befehl, den man braucht
e.Cancel = true;
heisst und man ihn nach
this.hide();
schreiben muss.
naja jetz gehts juchu ^^
Das nenn ich einen guten Fragensteller Bin gestern net mehr dazu gekommen die Einzelheiten zu posten, aber die Eigeninitiative sollten mehr Leute zeigen
Hallo!
Ich hab folgendes Problem. Ich habe ein Webbrowser-Control, welches direkt HTML Code anzeigen soll. In diesem HTML Code steckt JavaScript. Wenn ich den Code in eine Datei speichere, und sie normal mit dem dem Internet-Explorer öffne oder mit Mozilla funktioniert der Code. Und wenn ichs mit
axWebBrowser1.Navigate2("...")
mache auch. Nur nicht mit
axWebBrowser.Document.body.innerHTML = HTMLcode
Ich hab mal zum testen folgenden HTML-Code verwendet:
<html>
<head>
<title>jsenabled.htm</title>
<script type="text/javascript">
function js() {
document.getElementById("JS").innerHTML = "JavaScript is enabled!"}
</script>
</head>
<body onload="js()">
<span id="JS">JavaScript is not enabled!</span>
</body>
</html>
Und wenn ichs mit innerHTML mache kommt nur "Javascript is not enabled". Wenn ichs mit Navigate2 mache "JavaScript is enabled!"
woran liegt das?
man muss dazu sagen, dass eine Scripte in der Page aus dem Internet nachgeladen werden müssen.
Vielen Dank
ich habe hier eine einfache lösung anzubieten:
man ruft einfach :
System.Windows.Forms.Application.EnableVisualStyles();
auf, am besten im konstruktor bevor man irgnedetwas anderes macht.
dann kann man wie gewohnt seine CheckBoxen,Progressbars usw. erzeugen.
Dadurch wird veranlasst, dass wenn das xp-style vorhanden ist(ist der fall bei win xp prof/home,win2003) dieses auch zu benutzen.
Allerdings muss man noch das FlatStyle property auf System setzen, dies ist nur für alles was von button abstammt notwendig(Button,CheckBox,RadioButton).
Bsp für Property:
this.checkBox1.FlatStyle = System.Windows.Forms.FlatStyle.System;
Code-Example:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication2
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.CheckBox checkBox1;
private System.Windows.Forms.RadioButton radioButton1;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.ProgressBar progressBar1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
System.Windows.Forms.Application.EnableVisualStyles();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.checkBox1 = new System.Windows.Forms.CheckBox();
this.radioButton1 = new System.Windows.Forms.RadioButton();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(8, 10);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(304, 20);
this.textBox1.TabIndex = 0;
this.textBox1.Text = "textBox1";
//
// button1
//
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.button1.Location = new System.Drawing.Point(324, 8);
this.button1.Name = "button1";
this.button1.TabIndex = 1;
this.button1.Text = "button1";
//
// checkBox1
//
this.checkBox1.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkBox1.Location = new System.Drawing.Point(216, 40);
this.checkBox1.Name = "checkBox1";
this.checkBox1.TabIndex = 2;
this.checkBox1.Text = "checkBox1";
//
// radioButton1
//
this.radioButton1.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.radioButton1.Location = new System.Drawing.Point(8, 40);
this.radioButton1.Name = "radioButton1";
this.radioButton1.TabIndex = 3;
this.radioButton1.Text = "radioButton1";
//
// comboBox1
//
this.comboBox1.Location = new System.Drawing.Point(8, 70);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(392, 21);
this.comboBox1.TabIndex = 4;
this.comboBox1.Text = "comboBox1";
//
// progressBar1
//
this.progressBar1.Location = new System.Drawing.Point(9, 96);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(390, 16);
this.progressBar1.TabIndex = 5;
this.progressBar1.Value = 10;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(408, 118);
this.Controls.Add(this.progressBar1);
this.Controls.Add(this.comboBox1);
this.Controls.Add(this.radioButton1);
this.Controls.Add(this.checkBox1);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
}
}
skY! schrieb:
und nun hab ich noch eine frage und zwar, ich bekomms nicht gebacken double in string zu converten ... müsste ja eigtl. so sein:
string s = System.Convert.ToString(double dd);
aber so funzt es nicht, da meint er dass ers nicht converten kann
Du kannst auch einfach schreiben
string s = dd.ToString();
Aber die genauere Fehlermeldung ist immer hilfreicher als einfach nur zu sagen dass es nicht geht.
Gibt es in Microsoft Visual C++ .NET 2003 einen Befehl um enizelnen Pixel an einer bestimmten Position ( auf der Objektoberfläche ) zu "malen"
bräuchte eine Art befehl wie ::pixel(80,40,System::Drawing::Color::AliceBlue);
ich knobel hier schon ca.3 std rum komme dennoch nicht weiter
So mein Hauptteil sieht nun so aus:
if(Spieler.Anz_Player>1)
{
temp3=1;
this.Ausgabe_Player1.Text = "würfelt...";
temp2=1;
timer1.Enabled=true;
while(temp3==1);
temp3=1;
this.Ausgabe_Player2.Text = "würfelt...";
temp2=2;
timer1.Enabled=true;
}
if(Spieler.Anz_Player>2)
{
while(temp3==1);
temp3=1;
this.Ausgabe_Player3.Text = "würfelt...";
temp2=3;
timer1.Enabled=true;
}
if(Spieler.Anz_Player>3)
{
while(temp3==1);
temp3=1;
this.Ausgabe_Player4.Text = "würfelt...";
temp2=4;
timer1.Enabled=true;
}
if(Spieler.Anz_Player>4)
{
while(temp3==1);
temp3=1;
this.Ausgabe_Player5.Text = "würfelt...";
temp2=5;
timer1.Enabled=true;
}
if(Spieler.Anz_Player>5)
{
while(temp3==1);
temp3=1;
this.Ausgabe_Player6.Text = "würfelt...";
temp2=6;
timer1.Enabled=true;
}
Das ist mein Timer:
private void timer1_Tick(object sender, System.EventArgs e)
{
switch(temp2)
{
case 1:
this.WürfelSpieler1.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[0]+".bmp")) as Image;
this.Ausgabe_Player1.Text = "";
// timer1.Enabled=false;
// this.Ausgabe_Player2.Text = "würfelt...";
break;
case 2:
this.WürfelSpieler2.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[1]+".bmp")) as Image;
this.Ausgabe_Player2.Text = "";
timer1.Enabled=false;
// if(Spieler.Anz_Player>2)
// this.Ausgabe_Player3.Text = "würfelt...";
break;
case 3:
this.WürfelSpieler3.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[2]+".bmp")) as Image;
this.Ausgabe_Player3.Text = "";
timer1.Enabled=false;
// if(Spieler.Anz_Player>3)
// this.Ausgabe_Player4.Text = "würfelt...";
break;
case 4:
this.WürfelSpieler4.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[3]+".bmp")) as Image;
this.Ausgabe_Player4.Text = "";
timer1.Enabled=false;
// if(Spieler.Anz_Player>4)
// this.Ausgabe_Player5.Text = "würfelt...";
break;
case 5:
this.WürfelSpieler5.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[4]+".bmp")) as Image;
this.Ausgabe_Player5.Text = "";
timer1.Enabled=false;
// if(Spieler.Anz_Player>5)
// this.Ausgabe_Player6.Text = "würfelt...";
break;
case 6:
this.WürfelSpieler6.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[5]+".bmp")) as Image;
this.Ausgabe_Player6.Text = "";
timer1.Enabled=false;
break;
}
temp3=0;
}
Doch irgendwie habe ich so 2 Probleme.
Es wird immer nur der Letzte Würfel angezeigt, und dann auch nur ab und an...
Mit der "Warte - funktion" hängt sich das Prog einfach auf.
Wisst ihr woran das liegen könnte?
Achja: Die temp Attribute habe ich vorerst global gemacht.
private void comboseminargruppe2_SelectionChangeCommitted(object sender, System.EventArgs e)
{
combodozenthonorar.Items.Clear();
try
{
DataSet test;
string temp = comboseminargruppe2.Text;
test = Abfrage("SELECT personen.personenname FROM seminargruppen, lehrauftraege, personen WHERE '" + temp + "' = seminargruppen.seminargruppenbezeichnung AND seminargruppen.seminargruppennummer = lehrauftraege.seminargruppennummer AND lehrauftraege.personennummer = personen.personennummer", "Personen");
combodozenthonorar.DataSource = test.Tables["personen"];
combodozenthonorar.DisplayMember = "personenname";
test.Clear();
}
catch {}
}
Mein Problem jetzt ist, dass beim ersten auswählen alles wie gewünscht klappt, beim zweiten aber eine Exception an der Stelle
string temp = comboseminargruppe2.Text
kommt. Und zwar folgende:
Eine nicht behandelte Ausnahme des Typs 'System.ArgumentException' ist in system.windows.forms.dll aufgetreten.
Zusätzliche Informationen: Die Items-Auflistung kann nicht geändert werden, wenn die DataSource-Eigenschaft gesetzt ist.
Kurz zusammengefasst:
Je nachdem was du programmierst:
MFC -> CString
C++ -> std::string
.NET -> System::String
AnsiString ist der 'CString' von Borland
peterino schrieb:
(MFC Visual .net C++)
Die Wortschöpfungen werden ja immer kreativer
Als erstes würde ich dir empfehlen zu entscheiden welche GUI die verwenden möchtest. Auch wenn du MFC sagst(dann wärst du im falschen Forum) meinst du eher wohl Windows Form weil du ja da auch Klassennamen angegeben hattest.
Fertig gibts dein Eingabefenster nicht, ist aber sehr leicht zu realisieren. Einfach eine Form erstellen, die Controls so platzieren wie du die brauchst und dann evtl. noch Accept und CancelButton setzen, und schon hast du dein Fenster. Den Eingabewert könntest du dann noch als öffentliches Property angeben und das wars dann schon. Dann kannst du deine Form in der Art aufrufen:
if(DialogResult.OK == meineForm.ShowDialog())
MessageBox.Show("Eingegeben wurde: " + meineForm.Eingabe);
Das ist C# Pseudocode, da du mit den .Net Klassen arbeitest gehts in C++ ja genauso von der Logik her, wobei meineForm halt ne Variable von Typ deiner selbsdesignten Form ist und Eingabe nen öffentliches string Property.