Laden...

Forenbeiträge von Franknstein Ingesamt 529 Beiträge

25.03.2004 - 22:33 Uhr

Kein Problem....

24.03.2004 - 19:33 Uhr

Ich habe eingentlich keine Ahnung, bei mir, wenn ich C-Dlls anbinde gehts so wie du es gemacht hast sehr gut... aber lass doch mal das EntryPoint-Zeuch weg.

Oder es liegt echt an der Dll! Ich kenn mich mit C++ nicht so toll aus, aber was soll denn das __extern und __stdcall? Hat das was mit der Stdlib zu schaffen?

Mit dem Source für ne Dll hats geklappt, geht mit dem Visual TurboC 🙂 zu kompillieren:


#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    return TRUE;
}

extern "C" _declspec(dllexport) int Addiere(int x, int y)
{
	return x+y;
}

ist aber auch c, falls du das in C++ brauchst kann ich nicht helfen....
dein C# Quelltext passt soweit...

--
mfg
Franknstein

24.03.2004 - 19:04 Uhr

Ich habe auch noch eine Frage dazu, die passt hier gut rein....

Wie kann ich die Größe eines Arrays zur Laufzeit ändern, d.h. verkleinern?

--
mfg
Franknstein

17.03.2004 - 18:02 Uhr

Das irgent was mit der Funktion GetFileWithoutExtrension nicht passt?


string[] nameOhneExt=null;
nameOhneExt=FileName.Split('-');

this.Text=Programm+" - "+nameOhneExt[0];

Vielleicht gehts so?

Sonst musst du dir halt mal das Path.GetFileWithoutExtension() ausgeben lassen...

--
mfg
Franknstein

15.03.2004 - 21:39 Uhr

Besten Dank, so gehts einwand frei!

Mit dem aus der msdn ist immer ein index Out of Range gekommen, weil ich verpennt habe dass Group auch variieren kann...

Nochmals Danke!

--
mfg
Franknstein

15.03.2004 - 16:08 Uhr

Hallo,
ich habe eine Regex, die eine Datei untersucht. Jetzt würde ich gerne das Erebnis der Regex abfragen! Das Tool RegExWorkBench sagt auch, dass die Regex funzt. Jetzt habe ich aber keine Ahnung, wie ich die Ergebnisse der Regex abfragen kann. Und die msdn-Suche hat auch nichts ergeben:


Regex reg=new Regex(@"\[(\w+)\];(\w+)");
Match m=reg.Match("[aZ];test1"); //RWB liefert als Wert1 az und als Wert 2 test1 --passt

Aber ich komm einfach nicht drauf, wie ich in meinem Programm an die Ergebnisse der Regex komme....

--
mfg
Franknstein

10.03.2004 - 22:31 Uhr

Zum Edit:
Heißt das, dass ich das Programm u.U. als Nichtadmin nicht ausführen kann?

Das ist natürlich dann ungünstig...

10.03.2004 - 20:49 Uhr

Ich interressiere mich nur deshalb dafür, weil ich vielleicht einen sehr großen Struct haben werde. Wenn ich dann einen Funktion habe, die was an dem Struct ändern will(z.B. Sortieralgo), ist es halt besser wenn ich an diese Funktion einen Zeiger auf den Struct übergebe, als wenn der ganze Struct auf den Stack geschaufelt werden muss... falls bei C# die Parameter der Funktionen überhaupt auf den Stack kommen...

Aber wenn das mit den Zeigern so wie in C++ ist, gibts da keine Probleme und Unsave ist nicht gleich Unsauber!

Structs sollten doch wesentlich schneller sein als DataTables, oder?

--
mfg
Franknstein

10.03.2004 - 19:56 Uhr

Besten Dank,
Verdammt Schnelle Antwort. Also jetzt weiß ich, wie das im Allgemeinen abläuft, jetzt muss ich nur noch das mit den Zeigern herausfinden! Aber ich denke, mal das ist kein großer Unterschied zu C...

--
mfg
Franknstein

10.03.2004 - 19:37 Uhr

Hallo,
ich habe mich in letzter Zeit viel mit C beschäftigt, sodass ich endlich mal diese verdamichten Zeiger verstehe. In C kann man auf die Structs mit Zeigern zugreifen:


C:
struct test
{ 
int a;
int b;
} werte={1,2};

void main()
{
struct test *zeiger;
zeiger=&werte;
printf("%d", zeiger->a); //Das ist zeiger->a interressiert mich
char inp;
scanf("%1s", &inp);
}

Wie sieht das mit den Structs unter c# aus?
Wie kann ich wenn den Zeiger auf ein Struct habe, auf die Variablen im Struct zugreifen?

--
mfg
Franknstein

10.03.2004 - 19:23 Uhr

Debugge es doch ma, dann siehst, du was genau schief geht! Setze einfach in der Main bei Application.Run einen Startpunkt setzen, und immer auf nächste Anweisung klicken, und gucken, wo er stehen bleibt...

--
mfg
Franknstein

06.03.2004 - 21:23 Uhr

Besten Dank!
Das wars! Wenn ich im OnDraw die size neu berechne, dann gehts einwandfrei! Ich währe da wohl nicht so leicht drauf gekommen! Ich hätte mich todgesucht!

--
mfg
Franknstein

06.03.2004 - 00:52 Uhr

Quelltext:


using System;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;

namespace test.controls
{
	/// <summary>
	/// Zusammenfassende Beschreibung für Class
	/// </summary>

	public class myProgressBar  : System.Windows.Forms.Panel
	{
        private int x=1;
        private int y=1;
        private int width=0;
        private int height=0;
        public myProgressBar()
        {
            this.width=this.Size.Width-2;
            this.height=this.Size.Height-2;
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g=e.Graphics;
            Rectangle rec=new Rectangle(x, y, width, height);
            LinearGradientBrush lgb=new LinearGradientBrush(rec,
            //Color.FromArgb(0, 0, 136),
            Color.SeaGreen, Color.White,
            //Color.FromArgb(104, 148, 204),
            LinearGradientMode.Vertical);
            Pen pe=new Pen(Color.Black, 2);
            Pen wpe=new Pen(Color.White, 1);
            g.DrawRectangle(wpe, x, y, width, height);
            g.DrawRectangle(pe, x, y, width, height);
            g.FillRectangle(lgb, rec);
        } 
	}
}

Das grün-weiße ist kein eingenes Panel sondern sollte das Panel komplett ausmalen. Das ganze soll mal irgentwann eine Progressbar werden!

05.03.2004 - 17:41 Uhr

Hallo,
Ich habe mir eine Klasse erstellt, die ich vom Panel ableite. Ich möchte die Höhe und Breite vom "Panel" herausfinden. Dazu verwende ich die Variable this.Size.Width und this.Size.Heigth. Aber diese zwei Variablen liefern falsche Werte.

Auf dem angefügten Bild ist das auch sehr gut zu erkennen. Eigentlich sollte die grün-weiße Fläche so groß wie das Panel außen herum sein.

Ich habe überhaupt keine Erklärung dafür. Kann es sein, dass ich eine andere Variable für die Breite und Höhe des Panels nehmen muss?

--
mfg
Franknstein

04.03.2004 - 18:27 Uhr

In den Speicher solcher Anwendungen zu schreiben, geht glaub ich überhaupt nicht, da Windows das nicht so gerne sieht.

Könnte man nicht einfach WM_Send an den Message Pool von Windows leiten?

02.03.2004 - 22:16 Uhr

Hallo,
Soweit ich weiß, muss der ODBC-Treiber auf allen PCs sein, auf denen ein Datenbankzugriff erfolgen soll.
Aber du kannst die mysql.dll(Oder wie die heißt) von PHP nehmen und bei deinem Programm mitliefern. Da finden sich aber bei google viele Informationen dazu.
Das ist der einzig mir bekannte Weg, wie du die Treiberinstallation sparen kannst.

02.03.2004 - 22:11 Uhr

Hallo,
Sowas findet sich im großen Stiele bei http://www.codeproject.com/cs/miscctrl/ .

Es ist im Grunde ganz leicht, wenn du auf ein schon vorhandenes Control zurückgreifen kannst. Du erstellst eine neue Klasse, erbst denen die Eigenschaften der RichTextbox in deinem Falle und überschreibst die OnPaint-Methode.
Das geht aber nur, wenn die Klasse, von der du das Control ableistest nicht sealed(z.B. ProgressBar) ist!

--
mfg
Franknstein

02.03.2004 - 18:11 Uhr

Hallo,
Was meinst du mit vorbelegen?

Falls du mit vorbelgen sowas wie beim Erzeugen füllen meinst:

Werte fügt man mit .Add("Schlüssel", "Wert" hinzu. Ob es auch anders geht, weiß ich nicht!

--
mfg
Franknstein

02.03.2004 - 18:07 Uhr

Du hast Recht! Ob ich sie mit C# selbst zeichne, oder ob ich die zeichnen-Funktion überschreibe ist vom Tempo egal!

Zum Aussehen:
Unter 2000 gehen die Visual Styles nicht.... leider

29.02.2004 - 22:32 Uhr

@Code Hacker
Wird in .net2 eingeführt,
Was bringen die eigentlich? Das sind doch nur Konstrukte, die schon vom Compiler gelöst werden, oder?

29.02.2004 - 22:31 Uhr

Och, das ist fies X(

Aber es gibt kein Problem, für das es keine Lösung gibt...
In wie weit kann man mit C# auf C++ klassen zugreifen, die zur Dll kompilliert wurde? Mit nicht objektorientierten Dlls geht das ja recht einfach oder macht das keinen Unterschied?

--
mfg
Franknstein

29.02.2004 - 00:30 Uhr

Hallo,
ich will die :::


[C# Fehler] progressbar.cs(12): 'test.controls.myControl' : cannot inherit from sealed class 'System.Windows.Forms.ProgressBar'

Das ist natürlich nicht gut, und ich frage mich daher, wie man irgenwie die Klasse dennoch vererben kann.... oder geht das nicht?

Edit:
Titel geändert

--
mfg
Franknstein

27.02.2004 - 11:36 Uhr

Was ist IEEE754?
Und warum rundet der bei 2,45 nicht auch auf?
Rundet der etwa auf gerade Zahlen?

@Code Hacker:
Besten Dank, das ist eine sehr gute Lösung!

--
mfg
Franknstein

26.02.2004 - 18:54 Uhr

Ok, meine Frage passt da grade gut rein:
Wie kann ich Zahlen aufrunden?

26.02.2004 - 16:03 Uhr

Oh ich denke, die Dll auf codeproject.net schau ich mir mal näher an, auch wenn sie mit der MFC erstellt wurde....

Besten Dank für eure Hilfe!

mfg
Franknstein

26.02.2004 - 00:14 Uhr

Dann hast du mich auf was anderes gebracht! Stichwort Ausgabeumleitung! Danke, muss nur noch rausfinen wie das geht!

Kennt jemand den WinApi-Befehl "System" mit dem man quasi einfach ausgedrückt Befehle an die WinKonsole senden konnte? Gibts sowas für C#?

25.02.2004 - 19:37 Uhr

Hallo,
wie kann ich herausfinden, wie viel Traffic seit dem Aufbau der Netzwerk/Internetverbindung schon produziert wurde? Es würde mir schon langen, wenn ich die Anzahl der gesendeten Packete wüsste...
Loggt Windows die überhaupt irgenwo oder muss ich eine Sniffertreiber wie winpcap zum loggen ansteuern?


mfg
Franknstein

24.02.2004 - 20:31 Uhr

Hallo,
Genau das meine ich!
Besten Dank!
Verschönert meinen Terminkalender sehr!

--
mfg
Franknstein

19.02.2004 - 21:54 Uhr

Es gibt im Explorer von WindowsXp so eine Komponente wenn man auf Suchen geht. In dieser gibt es Kategorien, und Unterpunkte. Man kann die Kategorien auch minimieren. Weiß jemand wie dieses Control heißt?

mfg
Franknstein

19.02.2004 - 18:26 Uhr

Ich hab mir mal eine Directoryopenform gebaut. Die könntest du so erweitern, dass du damit auch Datein selecten kannst... wenn du sie willst, sag bescheid!

16.02.2004 - 21:33 Uhr

Klar kann man das, aber wenn man sich die Signaturen nicht anzeigen lässt, sieht man es nicht.... und jeder Benutzer sollte dann schon ein eigenes Template erstellen können... also ich finde das gut, und es ist halt nur ein Vorschlag...

16.02.2004 - 17:30 Uhr

... ich will so Templates, das in der Textbox, in der man die Beiträge einhackt, schon vordefinierte Texte wie

Hi,

--
mfg
Franksntein

stehen. Vielleicht könnte man die noch mit in die DB Posten, sodass jeder User einen eigenen Text eingeben kann....
(Seit ich das Emailprogramm The Bat nehme, bin ich halt verwöhnt)

mfg
Frankstnein

16.02.2004 - 17:27 Uhr

Du hast ja selbst geschrieben, warum du die CUP nicht 100% auslastest:
Immmer wenn du sie 100% belasteten würdest, bekommt sie ja neue Arbeit...

11.02.2004 - 18:30 Uhr

@CodeHacker:
Ja das geht, mit dem Assemblercode anzeigen! Aber nur wenn man VS hat. Oder besser gesagt, weiß ich es nur, wie es mit VS geht! Der Debugger kann einem den ASM-Output des JIT-Kompilers ausgeben. Aber wie das genau geht, weiß ich nicht...

11.02.2004 - 18:17 Uhr

Wurde eigentlich #Devenlop vorkompilliert? Wie man so hört soll es ja nicht wirklich langsam laufen.... (ich weiß es nicht, ich benutze VS)

@Code Hacker:
Man kann programme mit NGEN "vorkompillieren" sodass sie schneller starten. Normalerweise werden sie Just in Time kompilliert(gejittert).

mfg
Franknstein

10.02.2004 - 23:05 Uhr

Wann läuft eigentlich ein Programm schneller? Wenn es gejitter wird, oder wenn man es mittels ngen "geaoht" (Ahead of Time) hat?

mfg
Franknstein

08.02.2004 - 22:32 Uhr

Ja, oder glaubst du, das MS sich damit selbst mal das Wasser abgräbt, und wenn die Windowsleute auf Linux umsteigen die Entwicklungskosten in den Sand gesetzt haben?
C# ist nämlich von MS, aber so halb open Source. Die ganze Funktionsweise ist offengelegt...

08.02.2004 - 12:12 Uhr

Achso, vielleicht sollte ich mir doch mal ein Buch zulegen, in dem das alles steht...

07.02.2004 - 23:39 Uhr

Ja so gehts einwandfrei...
Besten Dank

PS:
Kann sich jemand erklären, warum es nicht anders ging, das läuft doch so aufs gleiche hinaus

mfg
Franknstein

07.02.2004 - 22:08 Uhr

readXml ist der Name der Funktion, die gestartet wird, wenn ein Thread gestartet wird...

07.02.2004 - 17:20 Uhr

Huch, da hab ich mich wohl geirrt....

07.02.2004 - 17:11 Uhr

Ich habe gedacht, dass es am static liegt, da es, wenn die Targetfunktion static ist, geht. Aber so eine Staticfunktion kann halt net auf die Members zugreifen.
Aber es kommt eh ein Compilererror:

Compiler
C:\Dokumente und Einstellungen\Frank\Eigene Dateien\Visual Studio Projects\spedion\XmlReader\xmlIo.cs(31): A field initializer cannot reference the nonstatic field, method, or property 'XmlReader.xmlIo.readXml()'

Der Code dafür:


using System;
using System.Threading;
using System.Xml;
using System.Data;

namespace XmlReader
{
	/// <summary>
	/// Summary description for xmlIo.
	/// </summary>
	public class xmlIo
	{
		/// <summary>
		/// Die Datei die Einzulesen ist:
		/// </summary>
		public string strFileToRead;
		
		/// <summary>
		/// Das Xmldokument
		/// </summary>
		XmlDocument doc=new XmlDocument();

		/// <summary>
		/// Hier kommt der Inhalt des XML-Dokuments rein:
		/// </summary>
		DataTable table=new DataTable("daten");
		
		/// <summary>
		/// Der Thread
		/// </summary>
		Thread th=new Thread(new ThreadStart(readXml));

		/// <summary>
		/// Hier wird die Config mit reinübergeben ohne 
		/// sie zu deserialisieren
		/// </summary>
		public object config;
		
		
		public xmlIo()
		{
			//
			// TODO: Add constructor logic here
			//
		}

		/// <summary>
		/// Hier wird der Thread gestartet, 
		/// der das Xml ausliest, 
		/// den Typ festlegt, 
		/// und die Datenbankeinträge macht:
		/// </summary>
		public void startThread()
		{
			//Thread starten
			th.Start();

		}

		/// <summary>
		/// Das Dokument Auslesen: 
		/// </summary>
		private void readXml()
		{
			try
			{
				//Xmldokument einlesen:
				doc.Load(strFileToRead);
			}
			catch(Exception err)
			{
				th.Abort();
				throw new Exception(err.Message);
			}
		}
	}
}


Edit:
code und Quote eingefügt

mfg
Franknstein

07.02.2004 - 12:33 Uhr

Hallo,
ich habe ein Problem! Ich starte einen neuen Thread. Die Targetfunktion ist als private static deklariert. Diese Funktion müsste aber auf eine Instanz einer Klasse zugreifen, die global deklariert ist. Wie geht das?
Wenn ich die Targetfunktion nicht als static deklariere wird der Thread nicht gestartet...

mfg
Franknstein

07.02.2004 - 12:29 Uhr

Nach 30sek greift erst der Connectiontimeout. Du müsstest ihn niedriger setzten, wenn du willst, das die Fehlermeldung früher kommt. Die Methode heist glaub ich setTimeOut oder einfach nur timeout

07.02.2004 - 10:56 Uhr

Besten Dank! Das mit der Hashliste ist eine gute Idee, ich hätte halt gedacht, das es sowas wie bei PHP das $$ gibt...
Ich habe das jetzt so gemacht:
(ich habs aber noch nicht getestet)
user1=(user)hashtable["userhash"]

05.02.2004 - 22:22 Uhr

Was wurde eingentlich bei dem Treffen so gemacht? Ich kann mir da nix druter vorstellen

05.02.2004 - 22:20 Uhr

Das sollte sich mit der Klasse System.Net.IPEndPoint herausfinden lassen...

05.02.2004 - 19:36 Uhr

Ich habe eine große Anzahl von Instanzen einer Klasse, auf die ich dynamisch zugreifen muss, aber ich weiß leider nicht wie das gehen soll!
Beispiel:
user 1=new user();
user 2=new user();
user 3=new user();
user 4=new user();
user 5=new user();

Wenn jetzt eine Nachricht vom User5 reingeschneit käme müsste ich auf die Instanz 5 zugreifen wenn eine vom User 4 reinkäme auf die Instanz 4. Wie mache ich das?

Soll ich ein UML-Diagramm zur besseren Verdeutlichung anhängen?

mfg
Frankstein

31.01.2004 - 22:42 Uhr

Ich hab mal ne Frage dazu: Nehmen wir mal an, ich hätte ein Dataset oder eine Hashtable. Wie könnte ich die zwischen den Forms austauschen?

30.01.2004 - 23:51 Uhr

Versuchs mal mit


textBox1.Text="bal";