Laden...
F
feadur myCSharp.de - Member
Entwickler Bonn Dabei seit 11.03.2005 722 Beiträge
Benutzerbeschreibung

Forenbeiträge von feadur Ingesamt 722 Beiträge

15.05.2006 - 09:19 Uhr

Hallo,

bei Interfaces sind immer alle Methoden public.

Falls in deiner Anwendung alle MDI Childs vom Typ "ChildForm" sind, macht es in der Tat keinen Sinn, Interfaces einzusetzen. Falls du aber verschiedene Forms hast, ist dieser Weg sicher eleganter.

Diese Zeile verstehe ich nicht:


ISaveMethod met = (IChildMethods) this.frmVisible;

sollte es nicht heissen


ISaveMethod met = (ISaveMethod) this.frmVisible;

?

15.05.2006 - 00:54 Uhr

auch auf die gefahr hin, dass ich mich hier jetzt richtig böse unbeliebt mache:

http://www.killbillsbrowser.com/

=)

15.05.2006 - 00:41 Uhr

Hi,
du könntest einen Event Handler für AfterSelect erstellen und dann in der Methode eine neue Form-Instanz erzeugen:


void TreeView1AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
		{			
			MyForm frm = new MyForm(); 
			frm.Show(); 			
		}

Im jeweiligen Knoten (Tag Eigenschaft) könntest du eine Information hinerlegen, welche Form denn nun angezeigt werden soll.
Im Event Handler kannst du dies dann über e.Node.Tag abrufen.

Gruß

15.05.2006 - 00:34 Uhr

du kannst es auch so schreiben:


bool b =  (this.input[0] =='1');

"xx" für String-Literale,
'x' für Char-Literale.

Peace

13.05.2006 - 18:41 Uhr

hallo,

bitte poste doch mal ein wenig code =)

13.05.2006 - 18:32 Uhr

mit welcher codierung liest du? wahrscheinlich utf-8.

http://rss.golem.de/rss.php?feed=RSS2.0 ist jedoch Latin-1 CodePage Encoding.

Peace

13.05.2006 - 14:23 Uhr

i.d.R IntPtr.

12.05.2006 - 22:51 Uhr

hallo,

kann sein, dass ich dein problem jetzt nicht ganz verstanden habe... also du hast eine form-klasse namens info? wieso hast du dann den code für eine form namens home gepostet? wo hakt es denn jetzt genau? bin grad etwas verwirrt, bitte erklär es genauer. gruß

12.05.2006 - 22:11 Uhr

wie wärs mit


Form blabla = new home(); 

?

12.05.2006 - 12:21 Uhr

meine lösung:


...
this.listView.OwnerDraw = true; 
this.listView.DrawItem += new System.Windows.Forms.DrawListViewItemEventHandler(this.ListViewDrawItem);		

...

void ListViewDrawItem(object sender, System.Windows.Forms.DrawListViewItemEventArgs e)
{
    SolidBrush brush1 = new SolidBrush(Color.Red); 
    SolidBrush brush2 = new SolidBrush(Color.Green);
 
    //füllen	 						
    Rectangle R = listView.GetItemRect(e.Item.Index); 
    Brush brush = (e.Item.Index%2 == 0) ? brush1 : brush2; 
    e.Graphics.FillRectangle(brush, R); 

    //jetzt den text...
    e.DrawText();
}



peace

12.05.2006 - 11:02 Uhr

Hallo,

"as" funktioniert im gegensatz zum Cast nur mit reference-types und nicht mit value types (also z.b. "int").

Wenn in deinem Beispiel


Irgendwas i=irgendwasähnliches as Irgendwas;
Irgendwas i=(Irgendwas) irgendwasähnliches;

"irgendwasähnliches" nicht in den Typ "Irgendwas" umgewandelt werden kann passiert folgendes:

"as" gibt für i einfach null zurück. (null == reference type)
der cast feuert jedoch eine InvalidCast Exception.

11.05.2006 - 12:02 Uhr

Hallo,

in VS.NET kannst du UserControls per Designer erstellen, d.h. einfach "Add new Item..." usw. Es empfiehlt sich, eigene Controls in Assemblies zu lagern (also "Klassenbibliothek). Diese kannst du dann der Toolbox hinzufügen.
wenn du controls nur per code erzeugen willst, kannst du eigene klassen von System.Windows.Forms.UserControl bzw. System.Windows.Forms.Control ableiten.

10.05.2006 - 13:23 Uhr

beispielsweise =) 😁

10.05.2006 - 13:16 Uhr

Hi,

du musst dem kontruktor von rectangle noch den zweiten parameter übergeben, wenn du von Rectangle ableitest.
probier mal sowas wie.


public Square(double a) : base(a,0)
{
...
}

statt der 0 kannst du ja irgend nen sinnvolleren wert übergeben.
grüße,
christopher

10.05.2006 - 12:26 Uhr

Hi,
probier mal sowas:


String str = "Hallo"; 
int lastIndex = str.LastIndexOf("a"); 

10.05.2006 - 11:35 Uhr

Hallo,

änder den kopf der inneren schleife mal in


for (y = 9;y > 0; y--)

=)

10.05.2006 - 10:44 Uhr

hallo,

du brauchst natürlich den IIS. Dieser muss unter Umständen noch für asp.net eingerichtet werden. Dies geht mit "aspnet_regiis -i". das tool findest du in deinem "Microsoft.Net\VERSION" Ordner. dann musst du ein neues virtuelles verzeichnis für deine webanwendung einrichten und schon sollte es funktionieren. du kannst ab diesem zeitpunkt deine geänderten dateien einfach rüberkopieren. (xcopy deployment).

10.05.2006 - 10:39 Uhr

Hallo,

deine child fenster müssen sich für das event anmelden.
Dazu muss du sicherstellen, dass sie auch zugriff auf das parent fenster bekommen. (also einen STRONG pointer, nicht nur basisklassenzugriff auf Form). innerhalb des child-fensters schreibst du dann ungefähr folgendes


Parent.TestButtonClicked += new TestEventHandler(ParentButton_Click);

an deiner stelle würde ich hier mit interfaces arbeiten. alle childs sollten ein interface implementieren, was dann vom Hauptfenster aufgerufen wird. damit wird es sehr einfach, hinterher neue funktionen einzubauen.

10.05.2006 - 10:11 Uhr

nur mal zum verständnis: du willst also im grunde die oberfläche deiner anwendung als html seite erstellen? oder willst du nur beim click auf bestimmte html tags,etc. diverse funktionen aufrufen? in beiden fällen kommst du mit dem webbrowser control nicht wirklich weit, sondern müsstest dich mit MSHTML befassen. (siehe MSDN od. ähnliches)

10.05.2006 - 09:24 Uhr

jupp... mit ASP.NET 😁

09.05.2006 - 09:51 Uhr

hi,
was macht denn die funktion gotoXY ?
in .net liest/schreibt man üblicherweise mit den StreamReader/StreamWriter Dateien.

09.05.2006 - 09:48 Uhr

hi,
ich vermisse grad sowas wie

public int Val1
{
get {return val1;}
set {val1 = value;}
}
 

das hast du aber gemacht, oder? =)

08.05.2006 - 20:40 Uhr

jo, versuch


Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream(typeof(Form1), "1.png");

08.05.2006 - 16:22 Uhr

hi,
das gab es in der tat schon oft. schau mal hier: http://www.mycsharp.de/wbb2/thread.php?threadid=18056&hilight=Resourcen

08.05.2006 - 10:02 Uhr

mit code sieht es schlecht aus, das ist schon ne recht komplexe sache, und du hast mehrere möglichkeiten. natürlich kannst du direkt ein neues setup vom server saugen, allerdings könnte das der user ja auch. macht also nicht sooo viel sinn. besser wäre es, wenn du deine software durchdacht organisierst und einzelne module in assembly kapselst. dann könntest du einzelne teile updaten, in denen sich was geändert hat.
ich würde dir raten, erst einmal ein konzept für eine klassenhirarchie zu erdenken. dann kannst du schaun an welchen stellen es sinn macht, einzelne klassen beim update auszutauschen. gruß

08.05.2006 - 09:59 Uhr

WSDL dient dazu, den angebotsumfang eines web-services zu beschreiben, nämlich seine methoden und datentypen.
OWL (Web **Ontology **Language) dagegen, versucht auf formale weise die semantischen inhalte in form von meta-informationen abzubilden, damit diese maschinell-lesbar werden. (stichwort ontologie und wissensräpresentation).
Man könnte als unterscheiden zwischen den fragen "Was kannst du?" und "Was meinst du?" =)
Der gedanke hinter owl ist im grunde das semantic web, mit dem es möglich sein soll, dass nicht mehr nur menschen, sondern auch maschinen web-inhalte "lesen" und "verstehen" können.

peace

08.05.2006 - 09:48 Uhr

und wie lautet deine frage ? =)

07.05.2006 - 14:52 Uhr

ich habe mal irgendwo gelesen, dass man die gcroot<> members noch innerhalb der klasse instanzieren muss.
versuch doch mal folgendes:

typedef struct dynamicData
{
struct dynamicData()
{
memset(this, 0, sizeof(*this));
db = gcnew DbSerial();
}


float Daten_in[ARRAY_SIZE];
char VerbindungsString[1024];


gcroot<DbSerial^> db;


} dynamicDataType;


glaube zwar ehrlich gesagt selbst nicht, dass das funktioniert, aber ausprobieren kostet ja nichts =)

07.05.2006 - 12:16 Uhr

ich habe mit gcroot auch schon sehr leidvolle erfahrungen gemacht =)

ist vielleicht ne blöde frage, aber ist pData nach der zuweisung

dynamicDataType *pData = (dynamicDataType *) pInstanceData;

denn richtig initialisiert?

07.05.2006 - 11:19 Uhr

hi,
was ist denn DbSerial? müsste in dem fall ja dann eine "ref class" sein.
sieht eigentlich alles richtig aus, mich wundert nur, warum du "pData->db = gcnew DbSerial;" und nicht "pData->db = gcnew DbSerial**()**;" schreibst.

29.04.2006 - 11:42 Uhr

Hallo,

zum Thema p2p habe ich mir vor ein paar jahren mal dieses buch geholt:

http://www.amazon.de/exec/obidos/ASIN/3826608321/qid%3D1146303399/028-1021647-9983701

da wird ein p2p client entwickelt und die implementierung in java und c# vorgestellt. mittlerweile sollte der schinken zwar veraltet sein, an den grundlegenden prinzipien hat sich aber wohl nicht sonderlich viel geändert.

icq zu implementieren ist sicherlich spannend. aber es gibt messenger halt wie sand am meer, wozu also die mühe machen? nur zum selbstzweck ist der aufwand zu hoch, find ich.

grundsätzlich kann ich dir nur raten dir erstmal ein gutes buch über tcp/ip anzuschaffen bevor du an solche sachen rangehst. bei http://www.terrashop.de/ solltest du dazu einiges finden.

grüße,
christopher

28.04.2006 - 10:22 Uhr

je nachdem ob du aufsteigend oder absteigend sortieren willst:

SELECT * FROM [...] WHERE [...] ORDER BY datum ASC;

bzw.

SELECT * FROM [...] WHERE [...] ORDER BY datum DESC;

benutze am besten SqlDataReader, SqlConnection, und SqlCommand.
Letzteres bietet die Möglichkeit, sql anweisungen auf der datenbank auszuführen.
Einfach mal googlen, da gibts tausend beispiele. peace

27.04.2006 - 20:49 Uhr

mit log4net kenne ich mich nicht aus aber normalerweise läd man eine assembly zur laufzeit mittels reflection.

Assembly asm = Assembly.LoadFile("assembly.dll");

dann kannst du types instanzieren:

object instance = Activator.CreateInstance(asm.GetType("Namespace.Type"));
27.04.2006 - 18:43 Uhr

hey,
da muss man sich halt überlegen ob sich der aufwand lohnt, bzw. wieviel man aufwenden muss... wenn du weisst wieviele einträge du hast, und du auch jederzeit an jeden einzelnen eintrag kommst, ist es ja kein problem. ist halt die frage was du für eine applikation entwickelst.
ich persönlich würde bei 3000 einträgen nicht auf virtual setzen. habe sowas mal mit ner grid control gemacht, aber da ging es um 100000 bis ca ne halbe millionen einträge =) gruß

27.04.2006 - 12:36 Uhr

Hallo,

mein code war leider fehlerhaft, sorry.

GetManifestResourceStream() braucht auch noch den Typ der Klasse, welche die Resource anfordert.
Habe mal ein kleines Programm gemacht, das ein Bild aus den Resourcen holt und darstellt:
"bild.jpg" muss wie gehabt auf Type="Embedded Resource" gesetzt werden.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.IO; 

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream(typeof(Form1), "bild.jpg");
            this.pictureBox1.Image = Image.FromStream(s); 
        }
    }
}

kannst es ja mal mit nem bild ausprobieren. peace

25.04.2006 - 23:16 Uhr

mein tipp: benutze nicht c#, benutze c++\cli. dann kannst du deine reader.dll benutzen und gleichzeitig das wundersame .net framework. fabelhaft, right? =)

25.04.2006 - 10:18 Uhr

Hi,

Application.DoEvents() stellt sicher, dass windows messages weiterhin verarbeitet werden. ansonsten würde die ProcessCmdKey() Methode erst gar nicht aufgerufen.
this.Show(), zeigt, wie der name schon anklingen lässt, deine form an. ansonsten würde ebenfalls nichts passieren. (da keine messages-verarbeitung).

ich kann herbivore nur zustimmen, dass der schleifen-block in einen thread ausgelagert werden sollte. von der form aus kannst du diesen dann starten und beenden.

warum dein programm nicht funktioniert kann ich dir nicht sagen, allerdings schreien die zahlreichen if-verschachtelungen nur so nach fehlern... halt mal ne runde durchdebuggen. vielleicht solltest du auch sicherstellen, dass die form in jedem fall angezeigt wird.

grüße,
feadur

24.04.2006 - 16:50 Uhr

in welcher umgebung arbeitest du? falls du mit windows forms arbeitest, könntest du ProcessCmdKey() Methode überschreiben, und beim drücken von escape ein flag setzen.
sowas ist aber in windows forms sehr unüblich=)


bool m_break = false; 

private void Form1_Load(object sender, EventArgs e)
 {
            this.Show();
            while (!m_break)
            {
                Application.DoEvents(); 
            }

            MessageBox.Show("ende"); 
 }

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
            if (keyData == Keys.Escape)
            {
                //setze flag...
                m_break = true;
            }            
            return base.ProcessCmdKey(ref msg, keyData);
}

24.04.2006 - 11:19 Uhr

Hallo,
bitte poste doch mal den code deiner methode. ansonsten kann man ja nicht wirklich was zu deinem problem sagen.
gruß

23.04.2006 - 21:36 Uhr

datei einbinden, BuildAction Eigenschaft auf "Embedded Resource" setzen.
Auslesen geht etwa so:


using System.Reflection; 
...

string file = "DeineDatei.xml"; 

Stream resStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(file); 


Grüße

23.04.2006 - 21:28 Uhr

man kann mit solcher funktionalität beispielsweise ein tool zur obfuscation von code bauen. il assembler code ist im gegensatz zu "richtigem" nativen code sehr einfach zu analysieren.

22.04.2006 - 13:51 Uhr

Hallo,
vorhandene Assemblies zur Laufzeit zu manipulieren und den il code auszulesen, ist wie oben beschrieben leider nur mit den tools von microsoft möglich. es gibt allerdings schon einige interessante projekte, man betrachte vor allem ILDump und ILEdit
http://sourceforge.net/projects/ildump
Sehr interessant klingt auch SharpAssembly
http://www.gotdotnet.com/Community/UserSamples/Download.aspx?SampleGuid=D5728198-C4D6-4851-96AF-1630D59DFE27
was ich selbst allerdings noch nicht ausprobiert habe.

Grüße

16.04.2006 - 11:43 Uhr

pointer wert als int geht so:


IntPtr intptr; 
int ptr =  (int)intptr.ToPointer(); 

ist allerdings unsafe.

gruß

30.04.2005 - 23:58 Uhr

hallo.

verstehe dein problem nicht so wirklich.
im custom control kannst du andere controls per Page.Controls.Add hinzufügen.

greetz, f.

26.04.2005 - 15:10 Uhr

hi,

trees kann man ganz schön per vorgänger-nachfolger struktur speichern. dazu bräuchtest du dann nichtmal xml sondern könntest es einfach in ne textdatei pinnen.
also irgendwie ne tabelle in der art

NodeID ParentID Description .....

1 -1 Knoten1
2 1 Knoten1.2
3 2 Knoten1.2.1

usw.

Speichern würd ich das ganze dann comma bzw. tab separated, damit kannst du die daten dann sehr einfach per String.Split parsen.

grüße,
f.

13.04.2005 - 11:04 Uhr

Hi,

codetechnisch empfiehlt es sich, die einzelnen schichten in assemblies zu kapseln. angenommen, du hast eine web anwendung entwickelt, die geschäftslogik aber in einer eigenen dll implementiert, so wird es kein problem sein, die präsentationsschicht auszutauschen, also z.b. von der web-anwendung zur win-forms-anwendung zu wechseln. analog verhält es sich dann mit allen anderen schichten, z.b. könntest du auf der persistenzschicht mal locker von der datenbank auf ein eigenes dateiformat oder so wechseln und müsstest dann anstatt der gesamten anwendung nur den Data Access Layer ändern.

im internet hab ich grad nich so sonderlich interessante sachen zu dem thema gefunden, aber hier geht es im grunde um software architektur, aber auch um projektmanagement, denn diese konzepte kommen vor allem in komplexen software systemen zum einsatz.

zu den beiden themen gibt es bücher wie sand am meer, also einfach mal amazon und terrashop checken =)

beste grüße,

f.

05.04.2005 - 14:26 Uhr

hi,

es werden nur strings verglichen, die quicksort methode sieht so aus:
array beinhaltet jeweils einen ca. 1 MB großen block daten. (also jeweils eine zeile aus einer sequenziellen datei)

EDIT

hat sich erledigt, mein quicksort hatte nen lustigen kleinen bug.
jetzt geht es rasend schnell.

😉

05.04.2005 - 13:23 Uhr

Hallo,

ich implementiere z.Z. einen External Multiway Merge Sort Algorithmus, mit dem Ziel, enorm große datenmengen (ab 100 000 datensätze) in relativ schneller zeit sortieren zu können. der algorithmus teilt die daten in blöcke von 1mb, welche dann jeweils einzeln im speicher mittels QuickSort sortiert werden.

leider dauert dies pro block momentan ca. 18 sekunden, was mir ehrlich gesagt viel zu langsam ist.

jetzt meine fragen:

weiss jemand wie die c# interne String.CompareTo() Methode arbeitet? wird hier mit hashing gearbeitet? kann ich mittels hashing die anzahl der vergleiche evtl. verringern um so zeit einzusparen? ich suche halt nach einem effizienterem weg, strings zu vergleichen, was ja der kern eines jeden sortier-algorithmus ist.

wenn jemand also ne idee hat, wie ich meinen quicksort algorithmus optmieren kann, wäre ich sehr dankbar wenn er/sie mir diese kundtun würde.

beste grüße,

f.

01.04.2005 - 13:05 Uhr

na ganz so einfach "aus einem byte array heraus anzeigen" geht nich. 🙂
da musste schon größere geschütze auffahren.
schau dir mal Report.NET an.

grüße, f.