Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von herbivore
Thema: Mehr als einen Tastenanschlag in der Listbox erkennen
Am im Forum: GUI: Windows-Forms

Hallo zervantis,

mit scheint eine ComboBox mit


DropDownStyle = ComboBoxStyle.Simple;
ist relativ nah, an dem was du willst.

herbivore

Thema: HttpWebRequest
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo linoge,

vor dem 'web.GetResponse()' braucht es zusätzlich noch ein:


web.Credentials = new NetworkCredential (USERNAME, KENNWORT);
dann sollte es klappen. Ob man dann überhaupt noch die Angaben vor dem '@' in der Uri braucht, habe ich jetzt nicht mehr probiert, aber vermutlich nicht.

Ist schon wundersam, die Uri-Klasse kann die UserInfo extrahieren, aber für HttpWebRequest reicht es nicht, die Infos in die Uri zu schreiben, sondern HttpWebRequest will sie extra, tztztz.

HTH

herbivore

Da bei WebRequests immer mal was schiefgehen kann, wäre es nicht schlecht, vorsorglich Exceptions zu fangen.

Thema: Problem mit SerialTools
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Silver78,

postet mal bitte noch den restlichen Code vor und in der Schleife.

Vorab schon mal, warum sprichst du von ByteArray, aber dann ist es doch ein StringArray? Kann es daran liegen? Und warum ist es byteString[0] und nicht byteString?

Naja, poste mal den Code, wenn es daran nicht liegt.

HTH

herbivore

Thema: HttpWebRequest
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo linoge,

mal ein kleiner Einschub, der zeigt, wie ich bei der Problemlösung vorgehe:


string Link = "http://USERNAME:[email protected]/nic/update?system=dyndns&hostname=DOMÄN&myip=ipaddress";
HttpWebRequest web = (HttpWebRequest) WebRequest.Create(Link);
HttpWebResponse webr = (HttpWebResponse) web.GetResponse();
Stream receiveStream = webr.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader( receiveStream, encode );
char [] read = new char [webr.ContentLength];
readStream.Read(read, 0, (int)webr.ContentLength);
Console.Write (webr.ContentLength + ": ");
Console.WriteLine (read);
receiveStream.Close();
webr.Close();
Ich habe das Programm einfach mal so erweitert (alles Beispielcode aus der Doku), dass ich an den "Rückgabewert" komme. Und siehe da, dieser ist 'badagent'.

Also flink


web.UserAgent ="Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.5) Gecko/20041108 Firefox/1.0";
gesetzt. Und schon sind wir einen Schritt weiter:

System.Net.WebException: The remote server returned an error: (401) Unauthorized.

Tja, und darüber denke ich dann später noch mal nach. :-)

herbivore

Thema: Problem mit SerialTools
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Rene,

nein, schon echt kleiner 10, denn die Schleife startet ja in guter alter Tradition bei 0.

herbivore

Thema: Problem mit SerialTools
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Silver78,

wenn du weißt, dass genau 10 Schleifendurchläufe erfolgen sollen, dann riecht das für mich nach:


for (int i = 0; i < 10; ++i)
und nicht nach if.

Ansonsten gibt es bei IO im Allgemeinen eigentlich immer Methoden, die warten bis das nächste Zeichen zur Verfügung steht und welche, die sofort zurückkehren und per Rückgabe klar machen, dass gerade nichts ansteht. Das sollte aber aus der Doku hervorgehen. Schau doch mal.

herbivore

Thema: Zugriff auf php-generiertes html-Dokument
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo marting,

Zitat
ob ich mal bei den programmieren des anmeldescripts nachfragen soll, ob es nur über cookies läuft oder ob es auch was mit der sid in der url zu tun hat...

das würde ich nicht tun. Einige Dienstanbieter mögen Bots, wie du einen schreiben willst, gar nicht.

Stattdessen würde ich versuchen, den Ablauf, der bei der Benutzung eines Browsers üblich ist, so genau wie möglich nachzubilden. Das geht mit dem o.g. WebControl m.E. am besten. Aber auch, wenn du es per HttpWebRequest machen willst, solltest du es hinbekommen.

Zu den Framesets noch was. Wenn du z.B. eine Seite von der URL www.test.de/hugo/index.php zurückbekommst, die so aussieht

frameset cols="250,*">
<frame src="verweise.php" name="Navigation">
<frame src="willicheigentlich.php" name="Daten">
</frameset>


dann kannst du einfach einen zweiten Request für www.test.de/hugo/willicheigentlich.php starten, der dann die gewünschten Daten liefert. Es verlangt ja keiner, dass du alles mit nur einen Request hinbekommst. Vielleicht sind auch fünf oder sechs nötig, wer weiß.

HTH

herbivore

Thema: Mehrere Bitmaps angeordnet in einer Bitmap speichern
Am im Forum: GUI: Windows-Forms

Hallo Fragender,

ich gehe mal davon aus, dass du z.B. aus vier 100x100 Bitmaps eine 200x200 Bitmap machen willst, die in jeder Ecke eine der Ausgangsbitmaps zeigt o.ä.

Das kann man pixelweise und sehr langsam machen Bitmap.GetPixel/Bitmap.SetPixel, oder indem man unter Zuhilfenahme eines Graphics-Objekt für die neue Bitmap (Graphics.FromImage) per DrawImage die alten Bilder in die neue Bitmap zeichnet.

HTH

herbivore

Thema: Dateiendung mit Programm verbinden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Maddinel,

Zitat
Wo muss ich das einbauen? Passiert sowas normalerweise nicht während des Setups? Wenn ja wie?

naja, das ist so eine Sache. Wenn wir mal davon ausgehen, dass du die Extension .MaddinelSpecialFilesHjgfjkgfjk registrieren willst. Dann sollte es reichen, das in der Installationsroutine zu machen.

Aber oft geht es um Erweiterungen, die verbreitet sind (.bmp, .txt, ...) oder zumindest potentiell auch von anderen Anwendungen genutzt werden (könnten), z.B. .msf was MaddinelSpecialFile oder MicroSoftFormat oder - was wirklich verwendet wird - Mail Summary File (Mozilla Mail / ThunderBird) - heißen könnte.

Damit eine Anwendung weiterhin funktioniert (also ihre Dateiassoziation behält), wenn eine konkurrierende Anwendung die Assoziation umbiegt, prüfen viele Anwendungen die Assoziationen beim Start oder sogar ständig im Hintergrund (WinAmp) oder bieten solche Prüfung noch besser in den Optionen an.

Man sollte darauf achten, keine Kampfanwendungen zu schreiben, die sich gegenseitig (ständig) die Assoziationen wegziehen, sondern den Benutzer im Vorfeld fragen und ihm auch später genaue Eingriffsmöglichkeiten geben (Optionen).

HTH

herbivore

Thema: Zugriff auf php-generiertes html-Dokument
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo marting,

das mit dem Einloggen durch den IE kann schon seinen Einfluß haben.

Um auf die Cookies & Co zu kommen: HTTP ist ein zustandsloses Protokoll, d.h. wenn der Web-Server von dir eine Anfrage bekommt, bearbeitet er die Anfrage, schließt die Verbindung (von KeepAlive mal abgesehen) und vergisst, dass du jemals da gewesen bist (mal von Einträgen im Log-File abgesehen). Wenn du die nächste Anfrage steht diese wieder nur für sich.

Nun ist das für Web-Anwendungen - z.B. für dieses Forum - blöd. Hier will man sich einloggen und dann in einer "Session" u.U. zusammenhängende Aktionen durchführen, die von der Web-Anwendung als zusammmengehörig und - vor allem - zu einem bestimmten Benutzer gehörig erkannt werden sollen.

Einen Möglichkeit dafür sind Cookies. Meist wird dazu beim Verarbeiten der abgeschickten Login-Seite eine Session-ID erzeugt und - zusammen mit anderen Infomationen - in einem Cookie auf deinem Rechner gespeichert. Die Web-Anwendung ist dann so realisiert, dass bei jeder weiteren Anfrage das Cookie abgefragt, und damit erkannt wird, dass du bereits angemeldet ist.

Die Anfragen stehen für den Web-Server immer noch jede für sich, aber die Web-Anwendung weiß durch das Cookie, dass die zusammengehören.

Es gibt noch weitere Möglichkeiten für das Session-Management, z.B. Session-IDs als Bestandteil der URL zu verwenden. Das ist von der jeweiligen Web-Anwendung abhängig.

Auf jeden Fall denke ich, dass das dein Problem im Zusammenhang mit dem Session-Management steht und z.B. irgendeine Information verloren geht bzw. die (erneute) Anmeldung nicht klappt o.ä.. Ich könnte mir auch vorstellen, dass die postData zwar richtig sind, du sie aber mit der URL der Anmeldeseite schicken müsstest und nicht mit der Seite, die du letztendlich abfragen willst.

HTH

herbivore

Thema: HttpWebRequest
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo linoge,

wo hast du den die URL her? Anyway:

Ich habe das mal für meinen dyndns-Account im Browser ausprobiert.
Der Update wird nicht ausgeführt und es wird 'notfqdn' angezeigt., wenn ich nur den hostnamen angebe, wenn ich aber den den Hostnamen inkl. Domäne und Topleveldomain angebe, dann klappt es (Ausgabe jetzt 'good' gefolgt von der IP).

Dabei habe ich die URL übrigens am Ende gekürzt und nur system=, hostname= und myip= angegeben. Probier es mal damit. Ansonsten solltest du zumindest das '%20' entfernen und es erstmal im Browser probieren, bis es klappt. Ich denke, dass es dann auch in C# sofort gehen müsste.

Du solltest darauf achten, wenn das Setzen erfolgreich ist, immer einer neue IP zu verwenden. Ich habe gelesen, dass der Account gesperrt wird, wenn man mehrmals versucht, die bereits schon gesetzte IP zu setzen.

HTH

herbivore

Thema: Problem mit eigenem Control
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo turndevil,

die Exception sagt es doch schon ziemlich genau:

System.ObjectDisposedException: Cannot access a disposed object named "TextBox".
Object name: "TextBox".
at System.Windows.Forms.Control.CreateHandle()
at System.Windows.Forms.TextBoxBase.CreateHandle()
at System.Windows.Forms.Control.get_Handle()
at System.Windows.Forms.TextBox.GetLength()
at System.Windows.Forms.TextBoxBase.set_SelectionStart(Int32 value)
at System.Windows.Forms.TextBox.SelectInternal(Int32 start, Int32 length)
at System.Windows.Forms.TextBoxBase.AppendText(String text)
at SARS.MCKeyboard.MobileKB.UpdatePreviewWin()
at SARS.MCKeyboard.MobileKB.updateTimer_Tick(Object sender, EventArgs e)
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.Callback(IntPtr hWnd, Int32 msg, IntPtr idEvent, IntPtr dwTime)


Ein TextBox-Control ist bereits disposed, aber es wird trotzdem noch versucht, darauf zuzugreifen. Dieser Zugriffsversuch hat seinen Anfang bei Timer.Callback, sprich der Timer schlägt zu, während das UserControl gerade zerstört wird.

Wenn du in 'protected override void Dispose (bool disposing)' deines Controls die existierenden Timer anhältst (Stop), ist das Problem verschwunden.

herbivore

Thema: Tree
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo _tb_,

zu 1. die Ordnung in einem Baum entsteht durch die Kanten zwischen den Knoten und nicht durch die mögliche Strukturierung eines zusätzlichen Index. Die Hashtable geht also schon in Ordnung.

zu 2. Natürlich und absichtlich static. Meine Voraussetzung war: "Wenn die Strings die Groupnodes eindeutig identifizieren". Wenn diese Voraussetzung erfüllt ist, handelt es sich hier um einen Index aller zu der Klasse erzeugten Objekte und den Zugriff auf diese per Id. Es ist dabei völlig unerheblich, ob die einzelnen Knoten in *einem* Baum enthalten sind oder sich auf einen ganzen Wald verteilen. Das static geht also schon in Ordnung. Ob die genannten Methoden als solche sinnvoll sind, steht und fällt mit der Einhaltung der Voraussetzung.

herbivore

Thema: XML mit C#
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo shady,

die Variable test gäbe es dann eben nicht mehr.

Besser und schlechter sind beim Entwickeln meist sowieso relative Begriffe. Wenn Du XmlTextReader verwenden würdest, würde m.E. der Code wesentlich länger, weil du eben nicht die Leitungsfähigkeit der "Datenbank im Speicher" nutzen kannst.

Anfangen müsstest wohl mit einer Schleife um die Read-Methode der Klasse XmlTextReader. Mit den anderen Methoden kannst du dann auf die Informationen des jeweils gelesenen Knoten zugreifen.

HTH

herbivore

Thema: Tree
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo malignate,

ich vermute mal, du meinst mit 'abfragen', den Zugriff per String auf die entsprechende Groupnode.

Wenn die Strings die Groupnodes eindeutig identifizieren, ist eine Hashtable zur Realisierung ganz praktisch. Es könnte eine solche Hashtable als statische Variable in der Klasse Groupnode geben. In diese wird im Konstruktor oder beim Setzen des Strings die aktuelle Groupnode - mit dem String als Key - eingetragen. Eine statische Methode der Klasse Groupnode könnte dann mit Hilfe der Hashtable und dem als Paramter übergebenen String leicht die gewünschte Groupnode zurückliefern.

HTH

herbivore

Thema: text unter mauszeiger erkennen
Am im Forum: GUI: Windows-Forms

Hallo Neral,

ich denke das Suchen kannst du dir sparen. Außer den üblichen Verdächtigen an kommerziellen Programmen wird es da nichts geben, denn eine OCR-Komponente selber schreiben ist eine gewaltige Aufgabe.

Das mit OCR ist natürlich eine coole Lösung, weil es ganz egal ist, in welcher Anwendung, in welcher Art Control oder gar in welchem Bild der Text enthalten ist, OCR arbeitet eben direkt mit den Bildschirmpunkten.

Auf der anderen Seite geht es natürlich in vielen Fällen, den Text unter dem Maus-Cursor auch ohne OCR zu ermitteln, z.B. wenn der Mauscursor über TextBoxen, Labes u.ä. steht.

Ich fürchte allerdings, dass man dazu an einigen Stellen auf Win32 durchgreifen muss und habe auch keinen Code parat. Ich wollte nur mal auf die Möglichkeit ansich hinweisen.

HTH

herbivore

Thema: animiertes Gif zu Array von Bmps contieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo LordK,

ich denke es müsste mit C# gehen. Wenn man ein animiertes Bild an die Image-Eigenschaft einer PictureBox zuweist, wird es ohne weiteres animiert dargestellt. Die Klassen können also mit mehreren Frames umgehen.

Falls es nicht sogar einfacher geht, gibt es die Klasse ImageAnimator, die zwar nur wenige Methoden hat, aber im EnevtHanlder, den man der Animate-Methode übergibt, müsste man (mindestens mit Bitmap.GetPixel) auf den aktuellen Frame zugreifen können. Mit UpdateFrames kommt man zum nächten Frame (erneuter Aufruf des Handlers).

HTH

herbivore

Thema: MDI Problem
Am im Forum: GUI: Windows-Forms

Hallo AlfameisterT,

wenn es bei Mdi wie bei einem "normalen" Fenster ist, müsste es die Eigenschaft WindowState sein, die du suchst. Show und Hide haben wie Visble nur was mit der Sichtbarkeit, nicht aber mit dem Status (normal, minimiert, maximiert) zu tun.

HTH

herbivore

Thema: Textdatei einlesen und nach Muster suchen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo marting,

wenn es darum geht, einen einfachen Text wie 'Hallo' zu suchen, mag es mit IndexOf einfacher gehen. Aber schon bei 'Hallo Peter', das ich auch finden will, wenn zwischen Hallo und Peter (aus Versehen?) zwei oder mehr Leerzeichen stehen, wird es mit IndexOf richtig kompliziert, wogegen es mit RE angenehm entspannend bleibt.

herbivore

Thema: Umlaute und Text anhängen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Justin-d-Sohr,

du hast recht StreamWriter.Encoding kann man nicht nachträglich setzen, man muss es dem gleich dem Konstruktor mitgeben. Da das StreamWriter-Objekt aber per File.AppendText erzeugt wird, benutzt man den Konstruktor ja nicht so direkt wie bei new.

Mein Problem ist: Ich sitze gerade nicht an meinem eigenen Rechner und kann deshalb nicht so einfach gucken und ausprobieren. Ich kann nur soviel sagen: Es muss gehen und zwar auch relativ simpel. Vielleicht hilft das schon mal. Ansonsten kann ich morgen Nachmittag noch mehr dazu schreiben.

herbivore

Thema: Daten uebermitteln
Am im Forum: GUI: Windows-Forms

Hallo stift,

für einen String steht es ja schon oben. Einen int o.ä. musst du vorher den Wert in einen String konvertieren, z.B. mit der int.ToString()-Methode.

herbivore

Thema: Zugriff auf php-generiertes html-Dokument
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo marting,

wenn ich dein Problem richtig verstehe, ist das WebControl von .NET 2.0 genau das was du brauchst. Damit hast du quasi ein eigenes Browser-Fenster, dass du aber auch per Programm steuern kannst. Login und Zugiff auf Frame-Sets, solten sich damit einfach realisieren lassen. Allerdings braucht es schon einen Moment, um das Konzept dieses sehr leitungsfähigen Controls zu verstehen. Aber wenn man über diese Hürde ist, hat man die voll Leitungsfähigkeit eines Browsers und braucht sich somit umnix mehr kümmern, was einen Browser so nebenbei alles macht: Agent-ID, Referer, Cookies, https und was es sonst nocht gibt.

HTH

herbivore

Thema: Performance von C#
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Son51,

in der c't gabs vor einiger Zeit dazu eine grundlegende und ausführliche Diskussion:

Arne Schäpers, Rudolf Huttary (hos)
Daniel Düsentrieb
C#, Java, C++ und Delphi im Effizienztest, Teil 1
Know-how,.NET-Corner,Benchmark, Geschwindigkeitsvergleich, Schleifen, Integer-Arithmetik
c't 19/03, Seite 204

Arne Schäpers, Rudolf Huttary (hos)
Daniel Düsentrieb
C#, Java, C++ und Delphi im Effizienztest, Teil 2
Know-how,.NET-Corner,Benchmark, ListList, ListList_OOP, objektverarbeitende Programmierung, Compiler, Optimierung, Konstruktoren
c't 21/03, Seite 222

Wie man auch an den Leserbriefen der folgenden Hefte sehen kann, kann man über Performance trefflich streiten und vergleicht schnell Äpfel mit Birnen. Lasst uns das hier bitte nicht wiederholen. :-)

herbivore

Thema: Fehler bei Zugriff auf Methode. Wie umgehen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Marcel,

Zitat
Obwohl ich ja eigentlich dachte mit der Zuweisung mainForm = new MainForm(); in der Main-Methode dem statischen Member mainForm einen Wert zugewiesen zu haben?!

ist ja auch richtig, nur erfolgt die Zuweisung - wie alle Zuweisungen - erst, nachdem der Ausdruck auf der rechten Seite vollständig ausgewertet ist. In Deinem Fall also erst, wenn der Konstruktor vollständig durchlaufen ist. Du greifst aber schon innerhalb des Konstruktor auf die Variable zu und zu diesem Zeitpunkt ist sie eben noch nicht gesetzt. Das mainForm = this; ändert genau das.

herbivore

Thema: animiertes Gif zu Array von Bmps contieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo LordK,

meinst du, wie du das in einem C#-Programm realisierst? Ok, könnte man in einem C# Forum vermuten, aber darauf habe ich keine Antwort parat. Deshalb: Oder brauchst du einfach ein (fertiges) Programm, dass das kann? Wenn ja, dann http://www.irfanview.de .

HTH

herbivore

Thema: class ist referenz, wie leitet man ab ?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Ingo,

Zitat
Ich kann damit leben, aber Wünsche bleiben für den C#-Nachfolger.
Zumindest was die Verweissemantik angeht "works C# as designed". Deine Wünsche werden sich nicht erfüllen. Und wie die div. Beiträge zeigen, gibt es dafür gute Gründe.
Zitat
Es ist auf jeden Fall nicht einfach c++-Projekte nach c# zu konvertieren.
Das hängt von den Projekten ab. Ich habe in keinem meiner Projekt C++-Variablen so benutzt:

MyClass a(1);
sondern immer so

MyClass *pa = new MyClass (1);
weil ich wusste, dass die Wertsemantik der C++-Variablen eine von C geerbte Schwäche von C++ ist!

Der Punkt ist der: Sicher gibt es (unabhängig von der Programmiersprache) einige Objekte mit Wertsemanik: Int, String, Point, Rectangle. Aber der Kern der Objektorientierung sind Objekte mit Id: Kunde, Auftrag, Konto, aber auch TextBox und Form. Also Objekte, die es jeweils nur einmal gibt. Es gibt sie in der realen Welt nur einmal - also ich meine jetzt z.B. den einen bestimmten Kunden, dann soll es ihn im Modell nur einmal geben und in der Implementierung nur einmal geben. So ein Objekt zu kopieren läuft der Intention entgegen. Zwei mal *derselbe* Kunde? Wie soll das gehen? (Ok, aus Versionierungsgründen, aber das ist ein anderes Thema, das man anders lösen kann und sollte). Deshalb ist es genau richtig, dass hier mit Verweisen gearbeitet wird, denn Gründe von verschiedenen Stellen auf denselben Kunden zuzugreifen kann und wird es natürlich geben.
Auch für die Klasse Form wäre a = b; mit Wertsemantik verheerend; habe ich das Fenster dann zweimal auf dem Schirm? Nee, will man nicht. Auch hier ist Verweissemantik gewünscht.

Ich hoffe, ich konnte klar machen, warum Verweissemantik bei Variablen ein sinnvolles Feature von C# ist und gerade Highlevel-Programmierung darstellt und ermöglicht.

herbivore

Thema: Altes Consolen C++ Prog -> C# Prog, No Flush Problem
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo charlkef,

war gerade am Einschlafen, da sind mir noch weitere Ideen zu deinem Problem gekommen; leider blieben diese ohne durchschlagenden Erfolg. Ich schreib trotzdem mal, was alles nicht geht :-) Doch eine Hoffnung bleibt noch (s.u.).

Zuerst habe ich folgendes kleines Programm pipe2.exe geschrieben, um leichter experimentieren zu können:


using System;
abstract class App
{
   public static int Main (string [] astrArg)
   {
      String strLine;
      while ((strLine  = Console.ReadLine ()) != null) {
         Console.WriteLine ("pipe2: " + strLine);
      }
      return 0;
   }
}
source.exe hatte ich schon:

#include <windows.h>
#include <stdio.h>
INT main (INT iArgC, PSZ apszArgV [])
{
   int i;
   for (i = 1; i ≤ 30; ++i) {
      fprintf (stdout, "stdout: line %4d\n", i);
   }
   Sleep (3000);
   fflush (stdout);
   Sleep (3000);
   return 0;
}
1. Überlegung:

Man kann mit 'source 2>&1 | pipe2' stdout und stderr zusammen in dieselbe Pipe umlenken. Meine Hoffnung war, dass dadurch das zeilenweise Flush von stderr auf stdout durchschlägt. Leider tut es das nicht!

2. Überlegung:

Ich bin davon ausgegangen, dass es more.com schafft, sofort an die Daten zu kommen. Also habe ich 'source | more | pipe2' probiert. Aber leider hat schon 'source | more' gezeigt, dass more nicht besser dasteht als pipe2.

3. Überlegung:

Bei den Druckertreibern habe leider ein negatives Resultat erzielt. Ich habe die Verzögerung (Sleep) in source.c verzehnfacht und danach einfach 'source > lpt1' aufgerufen. Ein Auftrag erscheint erst in der Drucker-Queue, wenn das flush erfolgt ist. Und als ich dann den FILE_TYPE_* mit
HANDLE hStdout;
DWORD dwType;
hStdout = GetStdHandle (STD_OUTPUT_HANDLE);
dwType = GetFileType (hStdout);
ermittelt habe, wurde auch klar warum: Er ist in diesem Fall FILE_TYPE_PIPE.

4. Überlegung:

Dann habe ich deinen Bufferlänge-0-Vorschlag doch noch mal aufgegriffen und dazu die clib-Funktion 'void setbuf(FILE *stream, char *buffer);' gefunden. Beschreibung: "setbuf controls buffering for the specified stream. [...] If the buffer argument is NULL, the stream is unbuffered."

Und siehe da, wenn ich in source.c an den Anfang ein 'setbuf (stdout, NULL);' schreibe, werden die Daten sofort in die Pipe geschrieben.

Wenn du es also schaffst, dein bestehendes Programm so zu patchen, dass dieser Aufruf ausgeführt wird, kommt noch alles zu einem glücklichen Ende.

HTH

herbivore

Thema: ArrayList in Array konvertieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo golohaas.de,

habe nichts gefunden, wie man ArrayLists oder auch "normale" Arrays (z.B. Object []) erfolgreich casten kann. Mehr als


User[] users = new User [arrayList.Count];
for (int i = 0; i < arrayList.Count; ++i) {
   users [i] = (User)arrayList [i];
}
fällt mir zu so später Stunde erstmal nicht ein.

herbivore

Thema: class ist referenz, wie leitet man ab ?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Ingo,

Zitat
Das wäre bitter. Ich war bisher vom c#-Konzept echt begeistert. Das ist der erste grobe Schnitzer in der Programmiersicherheit.

Das (Objekt-)Variablen nur Verweise auf Objekte enthalten ist kein Schnitzer, sondern dass es in C++ nicht so ist, ist ein Schitzer - nämlich ein Verstoß gegen das Konzept der Objektorientierung. Jede echte objektorientierte Programmiersprache (und da zähle ich C++ - auch wenn ich lange damit gearbeitet habe - mal nicht dazu) speichert in Variablen Verweise auf Objekte.

herbivore

Thema: class ist referenz, wie leitet man ab ?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Ingo,

Nachtrag:

Zitat


string a = "HALLO";
string b = "HUHU";
a=b; // wert wird kopiert ?
b="NEU"; // a bleibt auf HUHU;

Der Test ist irreführen, weil er auch bei allen Verweistypen zum gleichen Ergebnis kommt:


MyObject b = new MyObject ();
a = b;  // "Wert" sprich Objekt wird nicht kopiert (nur der Verweis)
b = new myObjekt ();  // a verweist trotzdem immer noch auf das erste Objekt

HTH

herbivore