Laden...

Forenbeiträge von schnecke Ingesamt 223 Beiträge

26.04.2005 - 08:34 Uhr

Hi,

ich möchte den Inhalt einer DataTable drucken. Das klappt auch alles, allerdings nur solange es eine Seite an Inhalt ist. Sobald ich mehr als eine Seite drucken möchte, geht es nicht mehr.... also er druckt schon mehrere Seiten, allerdings immer nur den Seitenheader ohne Inhalt ab Seite 2. Seite 1 ist richtig.
Wie kann ich mir merken, was ich schon aus meiner Tabelle gedruckt habe?! Habe es jetzt so:



// Seitenheader...

int i;
for(i = site+1; i < datatable.Rows.Count; i++)
{         			
	DataRow row = datatable.Rows[i];
                // drucken mit Graphics.drawString ...
}


if(seitenZuDrucken > 0)
{
	e.HasMorePages = true;
	site = i;
	return;
}

Wobei "site" eine Membervariable ist, die zum Start des Programms auf 0 ist.

Was ist nun an meinem Denken falsch.... bzw. warum tut er nicht das, was er tun soll?

19.04.2005 - 17:14 Uhr

Auf der CodeProject-Seite gab es einen größeren Artikel zum Thema ImageProcessing, da wurde u.a. auch vorgestellt, wie man über unsafe-Code "schneller" an die Pixel kommt 😁

Kannst ja mal hier reingucken, da sind alle Artikel aufgelistet: 👍 http://www.bobpowell.net/imageprocessing.htm

19.04.2005 - 16:14 Uhr

Naja, wenn du vielleicht einen math. Vektor suchst, um z.B. Koordinaten darzustellen, dann gibt es die Klasse Points (mit x- und y-Koordinaten) oder in dem DirectX SDK gibt es auch eine Klasse Vector für die Darstellung von x,y und z-Koordinate.

Wenn du die Listenstruktur Vector meinst, dann gibt es in C# wie schon oben erwähnt die ArrayList. 🙂

19.04.2005 - 16:08 Uhr

Kannst du nicht einfach die Erstellen() Methode so umändern, dass sie einen String zurückgibt?!

In z.B. der Klasse "Adressen"


public string Erstellen()
{
          string s;
          // blabla... dein Code
          return s;
}

In ner anderen Datei:


Adressen bla = new Adressen();
string a = bla.Erstellen();

... oder habe ich jetzt was an deiner Frage nicht verstanden?! 🤔

19.04.2005 - 16:03 Uhr

Oh sorry, das hatte ich nicht erwähnt: Habe die DataTable in einem DataGrid...

19.04.2005 - 11:19 Uhr

Ich mal wieder.... 😭

Habe eine dataTable mit 3 Spalten. Zwei Spalten haben Strings als Inhalt und eine Spalte hat DateTime. Und da ist das Problem. Man kann die Spalten durch Klicken auf die Header sortieren. Wenn ich nun aber auf den Header der DateTime-Spalte klicke, sortiert er mir die Daten darin falsch. Er orientiert sich anscheinend an den Zahlen, so macht er z.B. diese Reihenfolge:

01.01.2005
...
01.03.2004
....
01.07.2004
...
01.02.2005
...
usw.

Ich möchte das aber "human-logisch" 😉 haben:

01.03.2004
01.07.2004
01.01.2005
01.02.2005

Wie kann ich das beeinflussen? Habe auch schon mal DateTime in String umgewandelt, aber das hat auch wieder so komische Reihenfolgen ergeben... 8o

19.04.2005 - 09:58 Uhr

Würde auch zu einem Join-Statement raten, das ist hier am Schnellsten zu realisieren. Und außerdem kommt man so von den "Access-Joins" los... 😉 😁

19.04.2005 - 09:56 Uhr

Original von herbivore
die CheckBoxen in ein CheckBox[] / ArrayList packen

*schlag vorm Kopf* 8)
Manchmal kann es soooo einfach sein.... vielleicht sollte ich mal länger schlafen, war irgendwie zu früh heute.... 😁

Aber mal wieder Tausend Dank 🙂

19.04.2005 - 08:36 Uhr

Also wenn du noch keine Ahnung hast, bzw. noch keinen DirectX-Code geschrieben hast, dann wird ich nicht mit den "Vollen" anfangen. Wie wäre es, wenn du dir erstmal ein einfaches Objekt, z.B. einen Standardwürfel in DirectX importierst. Dann kannst du diesen über die World- und Transformationmatrix transformieren und verschieben, verändern etc. Erst durch die Übung dadurch versteht man, was es mit den "Welten" auf sich hat. Und wenn du das hast, kannst du ja immer noch deinen "Ego-Shooter-Light" 😁 bauen.

19.04.2005 - 08:30 Uhr

Habe ein ähnliches Problem:
Habe mir 5 Checkboxen erstellt und nach dem Click auf einen Button möchte ich wissen, welche Checkboxen alle angeklickt sind (der User soll mehrere wählen). Habe das jetzt mit mehreren verzweigten IFs gemacht (if checkbox.Checked), aber das scheint mir keine gute (schöne) Lösung zu sein. Das muss doch auch anders gehen. Habe hier in diesem Thread die Idee mit einem Eventhandler für alle Boxen gesehen, die gefiel mir sehr gut. Nur wie lese ich jetzt genau aus, welche Boxen nun angeklickt sind? 🤔

18.04.2005 - 19:07 Uhr

Original von herbivore
Klärt es das?

Ja, das war der Klick 🙂
Vielen Dank dafür! (Und funktionieren tut es auch!) 8)

18.04.2005 - 17:28 Uhr

Original von herbivore
wobei man zwischen zwei Strings ein Trennzeichen einfügen muss, dass sicher nicht in den Strings selbst vorkommt (evtl. '\x0000").

Hmm, bis auf diesen Satz fand ich deine Antwort ja verständlich... aber wie meinst du das jetzt mit dem Trennzeichen? Kannst du mir das nochmal an einem Beispiel erläutern? z.B. stehen in einem string[] diese Werte:


str[0] = "Hugo";
str[1] = "ist";
str[2] = "ein";
str[3] = "Faultier";

Wo müssen dann die Trennzeichen hin? Etwa so:

 str[0] + "\x0000" + str[1] + "\x0000" + str[2] + "\x0000" + str[3] 

Oder habe ich das jetzt falsch verstanden?
Und wie kann jetzt (rein technisch gefragt) die Hashtable diesen Wert mit einem anderen vergleichen?! Oder denke ich mal wieder nur zu komplex...?! X( 🤔

18.04.2005 - 17:14 Uhr

Original von Manu
Wenn ich nun aber wieder in den Design-Modus wechsele, fliegt das alles wieder raus - wie kann ich das verhindern?

Das würde ich auch mal gerne wissen wie das geht. Ich behelfe mir damit, dass ich die Eigenschaften in dem Design-Modus einstelle. Da hat man rechts so ein Property-Fenster, wo man all diese Einstellungen (Background etc.) machen kann. Wenn man sie dort auch per Klick macht, dann fliegen sie quasi nicht mehr raus. Aber da gibt es bestimmt auch noch eine richtige Lösung =)

Original von Manu
Wie stelle ich es an, dass ich statt mit der Maus auf "Weiter" zu klicken eine Tastenkombination (z.B. Alt+W) benutzen kann?

Das kannst du machen, in dem du auf KeyEvents lauschst, z.B. so:


void meinTextfeldKeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
	switch(e.KeyCode)
	{				
		case Keys.Enter:
		// mach was, z.B. Methode aufrufen
		break;
	}
}

Oder du kannst auch gernerell die OnKeyDown Methode überschreiben:


protected override void OnKeyDown(KeyEventArgs e)
{
	switch(e.KeyCode)
	{				
		case Keys.Escape:
		Application.Exit();
		break;
	}
}

18.04.2005 - 17:07 Uhr

Ja, wie Hauptmann schon schrieb geht das über die Adapters-Klasse.

Wenn der User die Einstellungen gewählt hast, kannst du ihn einen Button drücken lassen. Innerhalb dessen OnClick-Methode liest du alle gewählten Optionen aus und startest daraus eine DirectX-Anwedung in einer anderen Klasse. Dabei könntest du dem Konstruktor der Klasse deine Werte für das Device z.B. übergeben.

18.04.2005 - 16:58 Uhr

Hallo,

habe zu dem Prob. mal gesucht und auch einen ähnlichen Thread gefunden, jedoch komme ich damit nicht ganz klar (also mit den Lösungen). Wie gesagt, ich möchte doppelte Werte in einer ArrayList rausschmeißen. Ich sammel' in meiner ArrayList string-Arrays und möchte nun die string-Arrays, deren Werte (=Elemente) doppelt sind, rausschmeißen. In dem Thread, den ich gefunden habe, war eine tolle Idee mit Hashtables drin. Nur irgendwie komme ich damit nicht weiter. Hier mal der Code aus dem anderen Thread:


private ArrayList CleanArray(int startIndex, ArrayList arr)
{
	Hashtable ht = new Hashtable ();
	ArrayList arrNew = new ArrayList();
		
	foreach (Object obj in arr) 
	{
	                String val = obj.ToString();
		if (!ht.Contains (val)) 
		{
		        arrNew.Add (obj);
		        ht [val] = true;
		}
	}		
	return arrNew;
} 

Da wird das mit Objekten gehändelt. Wie mache ich das nun aber mit string[] ? Habe mal in der foreach-Anweisung das hier hingeschrieben:


foreach(string[] str in arr)

Und dann .... komme ich nicht weiter. Nun müsste ich ja in die Werte reingucken, also z.B. so:
str[0] + str[1] + str[2] = vorhanden, dann raus...
... und das krieg ich irgendwie zusammen mit der HashTable nicht hin. Aber das geht doch bestimmt? Denn ich möchte die ja gerne aus Performance-Gründen verwenden...

Also wenn noch jemand einen Tipp hat (insbesondere herbivore, von dem der Code mit der HashTable stammt - ich hoffe, ich durfte ihn hier noch mal posten) ... dann würde ich mich freuen.
Vielen Dank schon mal. 🙂

15.04.2005 - 14:39 Uhr

Oh... Directory-Klasse ... die habe ich noch gar nicht gekannt/gesehen/gefunden 8)
Aber das ist es! Vielen Dank! 😁

offtopic: gibt es nicht irgendwo so ein Poster zu kaufen, wo alle Klassen von C' drauf sind (oder von .NET)? Sowas gibt es nämlich für die Java-Klassen und C++. Das hat mir immer sehr geholfen. Bin nämlich noch neu in C# und werde von der Flut an Klassen und Interfaces erschlagen. Ne Übersicht wäre mal ganz schön. Also so eine Grafische... denn die MSDN ist ja ... X(

15.04.2005 - 14:26 Uhr

Hallo (mal wieder)...
... also mein neues Prob:

Ich habe ein Verzeichnis, in dem mehrere Textdateien sind. In dieses Verzeichnis werden laufend (d.h. jeden Tag) neue Textdateien gepackt, die immer einen anderen Namen haben (die Dateinamen haben keine einheitliche Syntax). Nun möchte ich alle (!) Textdateien per StreamReader holen... aber da muss ich ja den Dateinamen angeben... und den habe ich ja nicht?!

Kann ich nicht sowas machen wie:

  1. In einer Schleife durch alle Dateinamen im Verzeichnis laufen,
  2. gucken, ob Datei die Endung .txt hat (das geht ja mit der Path-Klasse)
  3. Wenn ja, Dateinamen auslesen
  4. Per StreamReader draus lesen.

Beim mir scheitern jetzt Schritt 1 und 3... keine Ahnung, wie ich das in Code umsetzen soll?!? ?(

14.04.2005 - 15:41 Uhr

Oh... gerade jetzt habe ich es hin bekommen... habe mir mal die Length der einzelnen Arrays anzeigen lassen und eine 0 bekommen. Dann habe ich ne Prüfung eingebaut, dass das Array eine Länge von 4 haben muss und es geht! 🙂 😁

Also viiiiiieln Dank für eure Hilfe!

Offtopic: dieses Forum hier ist echt toll. Man bekommt schnelle, kompetente Hilfe und die unzählige Male die ich hier schon die suche gedrückt habe und Hilfe bekommen habe kann ich gar nicht mehr zählen. Also vielen Dank an alle hier! Ihr seid echt toll!

btw. noch ne kleine Nebenfrage: ich komme aus der Webprogrammierung (PErl/PHP) und da gibt es einfache Funktionen um z.b. einzelne Zeichen eines Strings auszulesen... z.B. kann ich jeden Buchstaben eines Strings so im Prinzip so ansprechen:

string s = "hallo";
string einZeichen = s{1}; // gibt "a" aus.

Geht das in C# auch... oder gibt es da nur RegEx... oder habe ich da nur noch nicht die passende Klasse gefunden?!

14.04.2005 - 15:34 Uhr

Hi,
ja, hatte auch erst ne While-Schleife gehabt, aber da bumste es und deswegen habe ich mal einfach DoWhile ausprobiert. Habe es nun wieder geändert und so gemacht, wie du beschrieben hast. Das funktioniert leider nicht. Wenn ich aber die Zeile


myList.Add(as);

auskommentiere, stürzt es nicht ab. Leider stürzt er mit Application has exited ab, so dass ich keine Infos bekomme, in welcher Zeile er hängt. Was kann denn noch falsch sein, dass er mit der ArrayList Probs hat?
Die Liste wird im Konstruktor der Klasse mit new erzeugt und in einer Testroutine, die vor der Methode zum Lesen aus der Datei aufgerufen wird, füge ich auch problemlos per myList.Add() Daten hinzu.... ?! 🤔

14.04.2005 - 14:50 Uhr

Original von herbivore
Lustig ist z.B. aus Strings mit ToString einen String zu machen 🙂

Naja, das stimmt wohl.... =)

Habe jetzt das hier:


StreamReader sr = new StreamReader(filename);
string line;						
do
{
	line = sr.ReadLine();
	string[] s = line.Split(new char[] {' '} ); 			
	myList.Add(s);

}while(line != null);
			
sr.Close();

myList ist eine ArrayList. Und der Code da crasht... 🤔 ?(

14.04.2005 - 14:03 Uhr

Original von DeRaaZuul
//Da kommt der Fehler
mesh = Mesh.FromFile(name, MeshFlags.SystemMemory, dev, out em);

Muss da nicht noch sowas hin wie:


mesh = Mesh.FromFile(@"..\\..\"+name, MeshFlags.SystemMemory, dev, out em);

also mit dem @-Operator und den Backslashes... ?(

14.04.2005 - 13:59 Uhr

Hi,

danke für die vielen Antworten 🙂
Der Code hier hat dann auch funktioniert:

Original von renexxl

  
string[] strings = (string[])myList[0];  
foreach( string str in strings )  
{  
          
}  
  

Also noch mal ein dickes Merci 👍

Aber eine kleine Frage habe ich dann doch wieder... ich lese einen Stream aus einer Datei per Streamreader und möchte nun die Zeile, die ich bekomme, splitten. Doch da kommen auch immer cast-Exceptions... die Zeilen sehen so aus:


abcd efgh 01.01.2005 ijkl

Wäre also toll, wenn ich da 4 Strings draus machen könnte, die an Hand eines Leerzeichens getrennt sind. Und diese vier Strings dann in ein Array packen. So weit bin ich bisher:


string[] str = line.Split(" ".ToCharArray() );
string[] temp = new string[4];
temp[0] = str[1].ToString();
temp[1] = str[1].ToString();
temp[2] = str[2].ToString();
temp[3] = str[3].ToString();	

Aber wie gesagt da kommt ne Cast-Exception... is wahrscheinlich das gleiche wie beim obigen Problem, aber habe schon tausend verschiedene Sachen ausprobiert... aber nix hat geworkt...

Also wenn jemand nen Tipp hat... dann wäre ich sehr dankbar! 🙂

13.04.2005 - 17:18 Uhr

Hi zusammen!

Bin bisher ein stummer Mitleser gewesen, aber jetzt habe ich mich auch mal angemeldet, da ich keine Lösung finden konnte für mein kleines Problem.

Ich habe eine ArrayList, in der ich mehrere String-Arrays speichere. Nun möchte ich alle String-Arrays in einer Schleife wieder auslesen... doch daran scheitert es. Bekomme massig an cast-Exceptions und komme einfach nicht weiter... dabei ist es doch eigentlich ganz einfach. Ich will quasi sowas wie ein mehrdim. Array nur das es sich hierbei bei dem "äußeren" Array um eine ArrayList handelt... also quasi so:


Array List myList = new ArrayList();
string[] temp = new string[3];
temp[0] = "bla";
temp[1] = "blubb";
temp[2] = "bla blubb";
myList.Add(temp);

... und das jetzt einfach auslesen so dass ich von jedem string-Array auf die einzelnen Werte (bla und blubb) zugreifen kann.... ich kriegs einfach nicht gerallt.

Aber für euch dürfte das ja bestimmt nur ein winziges Stückchen Code sein, oder?! Schon mal vielen Dank!!!!