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 B3nj
Thema: Standard-Input, -Error und -Output gleichzeitig und "in Echtzeit" weiterleiten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

Danke für die Antwort. Funktionieren tut es aber leider nicht, vor allem darf ich den stdin nicht schliessen, da die Kommunikation dynamisch ist. Dafür habe ich eine andere einfache Lösung gefunden:

C equivalent of autoflush?

bzw.

setvbuf(stdout, NULL, _IONBF, 0)

Das bewirkt, dass stdout nicht gebuffert wird und dadurch funktioniert es. Natürlich funktioniert das nur wenn man das Zielprogramm beeinflussen kann, was ich glücklicherweise bis zu einem gewissen Grad kann.

Da stellt sich mir aber auch noch die Frage wie 'cmd.exe' das macht. Offensichtlich sind die Ausgaben erst mal in einem Buffer (welcher auch mit \n oder ähnlichem nicht geleert wird). Leert 'cmd.exe' den stdout-Buffer der aufzurufenden Programme selbst oder wie kommt das an den Inhalt? Darf ein programm überhaupt einen Filebuffer eines anderen Programmes einfach so flushen?

Es interessiert mich zwar, aber unbedingt wissen muss ich es nicht. =)

Danke für die Hilfe. & schönes Wochenende

mfG

Thema: Standard-Input, -Error und -Output gleichzeitig und "in Echtzeit" weiterleiten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Sorry für den Push, aber ich beisse mir noch immer die Zähne an dem Thema aus. Vielleicht suche ich viel zu weit weg?...

Das zuletzt genannte OSS-Projekt hat mir leider auch nicht wirklich weitergeholfen...

:(Naja, falls jemand ne andere einfache Lib kennt (c, c++, whatever) mit der ich einen Wrapper schreiben kann den ich dann in C# nutzen kann wäre ich auch schon zufrieden.

Einen weiteren push werde ich selbstverständlich nicht mehr machen.

Vielen Dank

mfG
b3nj

Thema: Standard-Input, -Error und -Output gleichzeitig und "in Echtzeit" weiterleiten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

Ich habe eine exe-Datei, welche in C geschrieben ist. Dieses Programm ist Konsolenbasiert und stellt sowas wie ne primitive Shell zur Verfügung. Einfacher gesagt einige Kommandos. Diese Kommandos können Parameter und eine Ausgabe haben.

Ich möchte in C# nun einen (GUI-)Wrapper für das Ding schreiben.
Ich habe bereits sehr mit der Weiterleitung von StdErr/Out/In gekämpft. Das ganze habe ich mit der Process-Klasse versucht. Insofern ich nur stdout und stderr weitergeleitet habe ging das auch soweit, halt ohne input.

Als ich aber den Input auch weitergeleitet habe ging stderr/stout nicht mehr? Seltsamerweise funktioniert das alles ohne Probleme bei der "cmd.exe".

Bereits mit einem einfachen C-Tool, dass n'Endlosloop mit einem Echo der Eingabe hat gehts nicht mehr (Wieso auch immer??!).

Das Problem scheint bekannt zu sein:
Capture output of process synchronously (i.e. "when it happens")

Mit dem in diesem Thread verlinkten "ProcessRunner" habe ich das ganze für ein Test-Tool (Dummy-Ausgabe) hingekriegt. Jedoch nicht für mein Tool selbst.

In der Konsole "cmd.exe" kann ich das Tool problemlos ausführen. Wieso kann ich den Redirect aber nicht sauber machen?

Das ganze scheint komplizierter zu sein als es sich anhört? Die Problemstellung ist ja relativ einfach: stderr/out/in (in Echtzeit) weiterleiten.

Das Zieltool nutzt mehrere Threads und ich kann auch Einfluss darauf nehmen, falls da etwas geändert werden muss.

mfG
b3nj

-edit

Da die Beschreibung wahrscheinlich nicht optimal ist hier noch eine weitere Darstellung des Probelms.

Ein sinnloses Beispiel-Tool in C, das wahrscheinlich überhaupt nicht schön geschrieben ist:

#include <stdio.h>
#include <process.h>
#include <windows.h>

void __cdecl dummy_thread(void* dummy) {
  int cnt;
  for (cnt = 0;; cnt++) {
    printf("%4d  %4d\n", (int)GetCurrentThreadId(), cnt);
    Sleep(5000);
  }
}

int main() {
  int threads = 10;
  while (--threads) {
    _beginthread(dummy_thread, 0, NULL);
    printf("You typed '%c'.\n", fgetc(stdin));
  }
  printf("Stop typing!\n");
  dummy_thread(NULL);
  return 0;
}

Kompiliert habe ich es mit mingw. Auf jeden Fall enthält es Eingaben, Ausgaben und Threads.

Ein Beispiel-Code um die EIn und Ausgabe zu steuern, auch der ist nicht unbedingt schön, dafür aber sehr einfach:

        private static void PrcoessReader(Process p)
        {
            int readed;
            while ((readed = p.StandardOutput.Read()) > 0)
            {
                Console.Write((char)readed);
                Console.Out.Flush();
           }
        }
        
        static void Main(string[] args)
        {
            ProcessStartInfo startInfo = new ProcessStartInfo("a.exe");
            startInfo.RedirectStandardOutput = true;
            startInfo.RedirectStandardError = true;
            startInfo.RedirectStandardInput = true;
            startInfo.UseShellExecute = false;
            startInfo.CreateNoWindow = true;
            startInfo.ErrorDialog = true;
            Process process = new Process();
            process.StartInfo = startInfo;
            process.Start();
            new Thread(() => PrcoessReader(process)).Start();
            while (true)
            {
                process.StandardInput.WriteLine(Console.ReadLine());
                process.StandardInput.Flush();
                continue;
            }
            Console.ReadKey();
        }

Der funktioniert jedoch nicht.

Dann habe ich noch einen Anlauf-Versuch mit dem "ProcessRunner" gemacht:

        static void Main(string[] args)
        {
            ProcessRunner runner = new ProcessRunner("a.exe");
            runner.OutputReceived += (s, e) => 
                Console.Write(e.Data);
            runner.Start();
            while (true)
                runner.StandardInput.WriteLine(Console.ReadLine());
        }

Leider auch ohne Erfolg.

Wichtig ist noch, dass das ganze unter Windows XP laufen muss.

mfG

-edit 2-

Das quelloffene Programm Console für Windows, welches in C++ geschrieben ist verhält sich korrekt.

Nur leider bin ich in C++ nicht so der Hammer. Naja, ich versuche mal rauszufinden wies das macht. Bzw. was ich falsch mache.

Für Hilfe bin ich aber weiterhin offen und ich würde mich natürlich auch sehr freuen.

Vielen Dank.

mfG

Thema: Logische/Physische Länge eines C#-Array
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zum Crosspost: Der ist atsächlich von mir. Die Frage ist sehr speziell deshalb habe ich an zwei Stellen gefragt. Kann man mir übel nehmen und ist wie ich gerade gesehen habe auch nicht erlaubt. Ok, das ist mein Fehler.

Das mit den Listen ist auch gut zu wissen, aber ich habe auf Arrays abgezielt ja.

@MrSparkle:
Deine Erklärung ist schon mal gut. Naja, grundsätzlich geht es um (m)einen Lehrer der der Meinung ist, dass die physische Länge des Arrays entspricht und die logische der Anzahl an Feldern die exlizit zugewiesen wurden. Da habe ich ihm widersprochen und das hat ihm überhaupt (!) nicht gefallen.

Aber das klingt schonmal gut. Damit lässt sich argumentieren:-) Weil die Erklärung des Lehrers will mir einfach nicht in den Kopf. (Hinterfragen sollte ja nicht schlimm sein^^)

Thema: Logische/Physische Länge eines C#-Array
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

Letztens bin ich auf die Begriffe logische und physische Länge eines Arrays gestossen. Explizit auf C# .Net bezogen.

Die physische Arraylänge wird wohl die "Länge" des Arrays sein (.Length). Wie aber ist die logische definiert?

Eigentlich dachte ich, dass die logische Länge eines Arrays = die physische Länge ist (zumindest in C#). Jetzt aber habe ich gehört, dass die logische Länge die Anzahl der explizit definierten indizes ist. Das macht für mich in C oder ähnlichen Sprachen irgendwo noch Sinn, da hier die Werte in einem Array ja nicht vordefiniert sind, in C# jedoch schon (imho default(T)).

=)Google sagt dazu auch nicht viel, daher wende ich mich mal an euch.

mfG

Thema: Was ist ein Aktualparameter?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ok, der Wikipediaeintrag ist relativ gut.

Von wegen Prof fragen: Das habe ich auch versucht (per Mail) nachdem ich erfolglos einige Schüler gefragt habe. Der meint, dass hätte man in der Stunde besprochen und ansonsten steht es in jedem halbwegs guten Buch an erster Stelle. Wer nicht in der Stunde war ist selbst schuld. (er hats ein bisschen freundlicher geschrieben^^)



naja, ich hoffe mal, dass die frage nicht an der prüfung kommt. notfalls habe ich ja jetzt aber jede schwammige antwort noch eine begründung.

danke

Thema: Was ist ein Aktualparameter?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

da ich nicht anwesend war kann ich es nicht genau sagen. ich hatte bis jetzt auch nicht viel mit dem begriff zu tun.

auf jeden fall dachte ich laut den berichten meiner kollegen, dass alle übergabeparameter als aktualparameter definiert sind. die verwendete variable innerhalb der funktion ist dann der formalparameter.

bsp:


static void main()
{
    int i = 0;
    DoIt(i, i); //i ist hier jeweils der aktualparameter
}

static void DoIt(int a, int b)
{
    //a und b sind formalparameter
}

irgendwie ist der begriff praktisch niemandem geläufig. naja, :-)


Hier die Frage inklusive allen Antworten:
Was ist ein Aktual-Parameter?
[ ] Eine Variable im Rahmen einer Schnittstelle
[ ] Eine Variable, die im Unterprogrammaufruf verwendet wird
[ ] Eine Variable mit einem konstanten Wert
[ ] Eine Variable, die keinen festen Datentyp hat
[ ] Eine Variable, die beim Unterprogrammaufruf einen Wert besitzt

Gleich meine Gedanken dazu:
1) Falsch
2) Richtig
3) Falsch
4) ?
5) Wenn ich schon dabei bin: ?, wobei ich tendiere zu Ja. Die Frage wäre hier: Wird null auch als Wert angesehen...?

Gruss
benj

Thema: Was ist ein Aktualparameter?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

hallo,

wir nehmen in der c# durch. man musste nur in die lektionen kommen, wenn man die grundlagen nicht beherrscht.

diese beinhalten bis jetzt: schleifen, primitive datentypen, funktionen
dadurch dass ich schon seit jahren c# programmiere sah ich es noch nicht als nötig dazuzukommen.

wir haben bald eine prüfung dazu, das ist auch ok. nun haben wir per mail eine probeprüfung erhalten, diese ist soweit auch nicht schwer, ausser eine Frage kann ich mir nicht eindeutig beantworten.

Pro Frage sind mehrere Antworten möglich, ich schreibe aber nur die von mir nicht verstande auf:

Was ist ein Aktual-Parameter?
...
[ ] Eine Variable, die keinen festen Datentyp hat
...

ich habe auch mehrere leute gefragt, jedoch ist sich niemand wirklich sicher, auch nicht die die den Unterricht besucht haben...

hauptsächlich frage ich mich was hier "fester datentyp" in dem zusammenhang bedeutet. ein aktualparameter muss ja nur zum zieltyp (vererbung, inplizite konvertierungen...) kompatibel sein und nicht genau diesem typ entsprechen.

hat jemand eine idee?

gruss
b3nj

Thema: Mehrere Tasten lesen [Konsole]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

danke für die schnelle antwort!

also, das mit ctrl/shift habe ich auch schon probiert (habe vergessen es zu erwähnen).

Das funktioniert ganz gut wenn man zuerst auf die "ballern-taste" (ctrl) klickt und dann auf eine andere, dann wird beides wahrgenommen.

klicke ich jedoch zuerst auf eine andere taste und bleibe auch auf ihr (z.B. wenn ich ganz nacht rechts springen will) und möchte zwischendurch ballern, dann ist der aufruf der ersten taste (in diesem fall der rechte pfeil) verloren. somit funktioniert das nur, wenn ctrl zuerst geklickt wird, was ja nicht immer der fall sein muss.

die funktion "GetAsyncKeyState" werde ich mit gleich mal anschauen, vielen dank.

mfG
benj

-edit

ok, die funktion funktioniert perfekt:

         [DllImport("user32.dll")]
        static extern bool GetAsyncKeyState(ConsoleKey key); 

Wobei sie global funktioniert und nicht nur auf den eigenen Prozess beschränkt ist, was aber nicht so schlimm ist.

vielen dank.

mfG
benj

Thema: Mehrere Tasten lesen [Konsole]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

ich habe gerade probiert ein kleines spiel (so à la space invaders) für die konsole zu machen, mal um zu schauen ob und wies geht.

jetzt bin ich aber über ein problem gestolpert. ich habe eine kleine "engine" geschrieben um die ganze ausgabe ein bisschen zu abstrahieren, diese engine beinhaltet auch die eingabe, in diesem fall der tastendruck des users.

viele tasten gibt es nicht: rechts, links, space (feuern).
intern wird für die eingabe der tasten ein eigener Thread erstellt und gestartet, dieser ist +/- so aufgebaut (ich habe den code nicht hier):

while (true)
{
    ConsoleKey key = Console.ReadKey().Key;
    if (KeyPressed != null)
    {
         KeyPressed(this, new ConsoleKeyPressedEventArgs(key));
    }
}

Leider kann ich nicht parallel tasten lesen, bzw. nachschauen ob eine spezielle taste gedrückt ist oder nicht.

ich möchte machen, dass man gleichzeitig laufen und ballern kann, dadurch, dass ich aber nur eine taste auf einmal erkennen kann geht das natürlich nicht, entweder läuft man oder man ballert.

also:
ist es möglich irgendwelche events (keydown/keyup) aus der konsole abzufangen? oder kann ich irgendwo eine Liste aller gerade geklickten Tasten abrufen?

und kann man das ohne die WinApi machen? weil, wenn ich c# code dann probiere ich zumindest immer so plattformunabhängig wie möglich zu bleiben:-) falls es aber nur mit der WinApi geht, dann ists auch nicht so schlimm.

mfG
benj

Thema: Spezieller HTTP Post
Am im Forum: Web-Technologien

Hallo,

Danke für die Antworten.

@jaensen

Ich werde das RFC gleich mal anschauen und ausprobieren. vielen dank.

@marsstein

ich habe gerade nachgeschaut, aber das xml-tag ist nötig. der tag wird im browser auch angezeigt, den source davon hab ich mit dem chrome geholt, keine ahnung weshalb der mit das tag im source nicht angezeigt hat, in der oberfläche ist es aber eindeutig vorhanden.

mfG toredo

Thema: Spezieller HTTP Post
Am im Forum: Web-Technologien

Hallo,

Ich habe schön öfters mal einen Http-Post in C# abgeworfen. Als Daten habe ich dann immer einzelne normale parameter genommen, welche ich wie folgt in den http-body gefüllt habe:

Zitat
a=asdf&b=dfgh&someeothervalue=asdasd

nun muss ich aber einen http-post für dieses formular machen:

<HTML xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
  <HEAD> 
    <TITLE>Debug Post</TITLE> 
  </HEAD> 
  <BODY> 
    <H1>Debug Post</H1> 
    <FORM ACTION="http://192.168.1.22:8081/unimodmcGwIfApp.cgi" METHOD="POST" ENCTYPE="multipart/form-data"> 
      <TEXTAREA name="data" rows="10" cols="80"> 
<request> 
  <getGwMacAddress> 
    <mac>00:11:22:dd:Ee:fF</mac> 
  </getGwMacAddress> 
</request> 
     </TEXTAREA> 
      <P> 
        <INPUT TYPE="submit" NAME="Submit" VALUE="Submit Form"> 
      </P> 
    </FORM> 
  </BODY> 
</HTML> 


wie ich im firefox mit tamper gesehen habe wird der inhalt nicht wie oben beschrieben gesendet. weiss jemand wie ich diesen vorgang in c# umsetzen kann?

mfG b3nj

-edit-

so ich habe nochmals fleissig gegoogelt.

ich habe noch einen anderen lösungsansatz gefunden:

            WebClient client = new WebClient();
            NameValueCollection parameters = new NameValueCollection();
            parameters.Add("data", @"<?xml version=""1.0"" encoding=""utf-8""?>
<request>
  <getGwMacAddress>
    <mac>00:11:22:dd:Ee:fF</mac>
  </getGwMacAddress>
</request>");
            byte[] response = client.UploadValues("http://" + something.IPAddress + ":8081/something.cgi", parameters);

wobei die url stimmt. das eingegebene xml sollte auch ein gültiges xml zurückgeben, ich erhalte als antwort jedoch:
Zitat
<?xml version="1.0" encoding="utf-8"?>
<response>
<FunctionNotParsable>
<mac>XX:XX:XX:XX:XX:XX</mac>
<retVal>12</retVal>
<retStr>Input XML file does not validate</retStr>
</FunctionNotParsable>
</response>

ich habe mal den cgi-log auf "debug" geschaltet, das folgende kommt dabei raus:
Zitat
42 [1081655824] INFO main (main.cpp:199) - Started ./unimodmcGwIfApp.cgi
49 [1081655824] INFO main (main.cpp:228) - Got xml from the CGI request [\_xml version]"1.0" encoding]"utf-8"_^-*\request^-* \getGwMacAddress^-* \mac^00Z11Z22ZddZEeZfF\Omac^-* \OgetGwMacAddress^-*\Orequest^]
50 [1081655824] INFO main (main.cpp:247) - <?xml ... ?>no found!
55 [1081655824] INFO main (main.cpp:254) - Ended ./something.cgi

hier noch zum vergleich ein funktionierender aufruf mit dem oben angegebenen formular:
Zitat
56 [1081655824] INFO main (main.cpp:234) - Parsed xml in memory
74 [1081655824] INFO main (Utils.cpp:99) - Parsed style sheet [getFunctionName.xslt]
82 [1081655824] INFO main (Utils.cpp:106) - Applied style sheet [getFunctionName.xslt]
84 [1081655824] INFO main (Utils.cpp:125) - Stripped string
85 [1081655824] INFO main (Utils.cpp:127) - Decoded string
90 [1081655824] INFO main (Utils.cpp:99) - Parsed style sheet [getMac.xslt]
92 [1081655824] INFO main (Utils.cpp:106) - Applied style sheet [getMac.xslt]
93 [1081655824] INFO main (Utils.cpp:125) - Stripped string
94 [1081655824] INFO main (Utils.cpp:127) - Decoded string
95 [1081655824] INFO main (main.cpp:191) - Mac ok
96 [1081655824] INFO GetMacAddress GetMacAddress.cpp:8) - Running
102 [1081655824] INFO main (main.cpp:254) - Ended ./something.cgi

ich habe auch schon probiert das encoding vom WebClient zu ändern, ich habe Default und UTF8 probiert, beides nützte nichts.

mfG b3nj

Thema: Proxy-Konfigurationsdatei in HttpWebRequest verwenden
Am im Forum: Netzwerktechnologien

Hallo,

Ich habe einen HttpWebRequest, welcher auch tadellos funktioniert. Jetzt habe ich aber das Problem, dass ich für das Tool auch Proxyeinstellungen verwenden können muss.

Diese liegen unter einer URL als .cfg-Datei vor und werden auf den Client-PC's jeweils im Firefox unter "Extras/Einstellungen/Erweitert/Netzwerk/Einstellungen" als "Automatische Proxy-Konfigurations-URL" eingetragen.

Meine Frage dazu, kann ich eine solche Konfigurationsdatei irgendwie einlesen und auch benutzen?

mfG benj

Thema: remoting, xp funktioniert, vista nicht
Am im Forum: Web-Technologien

Hallo,

Ich habe bereits ausführlich gegoogelt und hier nach Lösungen gesucht, jedoch hat alles nichts geholfen.

Meine aktuelle Lage:
-Ich entwickle gerade eine Software (bzw. sie existiert schon) welche auf Remoting basiert (ich habe bewusst Remoting und nicht WCF genommen, wobei ich in Zukunft wahrscheinlich mal mehr über WCF lernen werde)
-Diese Software bringt einen Fehler sobald der Client verbinden möchte, bzw zu dem Zeitpunkt, bei dem eine Methode aufgerufen wird "Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte"
-Firewall usw. ist aus

Ich habe auch mehrere Beispielprojekte heruntergeladen um das ganze zu testen.

z.B. dieses hier:
http://www.codeproject.com/KB/IP/remotinggui.aspx

Dieses funktioniert auf einem anderem Notebook (XPSP3 Pro) problemlos, auf meinem Entwicklungsnotebook (Vista Ultimate SP1) erscheint jedoch auch der oben genannte Fehler.

Ich hab mal ein TestProjekt erstellt, welches jedoch auch nicht funktioniert, hier der Code:
IServer

    public interface IServer
    {
        string GetHelloWorld();
    }
Server

    public class Server : MarshalByRefObject, IServer
    {
        internal static Server DefaultInstance { get; private set; }

        public Server()
        {
            Console.WriteLine("I am here...");
            DefaultInstance = this;
        }

        public string GetHelloWorld()
        {
            return "Hello World";
        }
    }
Program.cs Server

            BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
            provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
            IDictionary props = new Hashtable();
            props["port"] = 50050;
            ChannelServices.RegisterChannel(new TcpChannel(props, null, provider), true);
            Server srv = new Server();
            ObjRef refGreeter = RemotingServices.Marshal(srv, "test");
            while (true)
            {
                Console.ReadKey();
                Console.Write("\b");
            }
Program.cs Client

            BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
            provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
            IDictionary props = new Hashtable();
            props["port"] = 0;
            ChannelServices.RegisterChannel(new TcpChannel(props, null, provider), true);
            IServer srv = (IServer)Activator.GetObject(
                typeof(IServer), "tcp://localhost:50050/test");
            Console.WriteLine(srv.GetHelloWorld());
            while (true)
            {
                Console.ReadKey();
                Console.Write("\b");
            }

Wobei ich mehrere Möglichkeiten gefunden habe eine Verbinung aufzubauen, jedoch funktioniert auf meinem Entiwcklungsnotebook keine davon.

mfG benj

Thema: DllImport Problem mit Aufruf
Am im Forum: Rund um die Programmierung

Hallo,

Ich habe eine Dll importiert bzw eine Methode der Dll, hier der Code:

SECItem *
NSSBase64_DecodeBuffer (PRArenaPool *arenaOpt, SECItem *outItemOpt,
                        const char *inStr, unsigned int inLen)
{
    return NSSBase64_DecodeBuffer_Util(arenaOpt, outItemOpt, inStr, inLen);
}
http://www.google.com/codesearch/p?hl=de#e_ObwTAVPyo/security/nss/lib/nss/utilwrap.c&q=NSSBase64_DecodeBuffer&l=734

Zum verständnis noch SECItem:
struct SECItem {
  SECItemType type;
  unsigned char *data;
  unsigned int len;
};
http://www.google.com/codesearch/p?hl=de#YwaaF8DorRY/src/chrome/browser/importer/firefox_importer_utils.h&q=SECItem&l=125

Und noch SECItemType:
enum SECItemType {
  siBuffer = 0,
  siClearDataBuffer = 1,
  siCipherDataBuffer = 2,
  siDERCertBuffer = 3,
  siEncodedCertBuffer = 4,
  siDERNameBuffer = 5,
  siEncodedNameBuffer = 6,
  siAsciiNameString = 7,
  siAsciiString = 8,
  siDEROID = 9,
  siUnsignedInteger = 10,
  siUTCTime = 11,
  siGeneralizedTime = 12
};
http://www.google.com/codesearch/p?hl=de#YwaaF8DorRY/src/chrome/browser/importer/firefox_importer_utils.h&q=SECItemType&l=109

Und ein Aufruf der NSSBase64_DecodeBuffer-Funktion:
SECItem newResult = {0, 0, 0};
SECItem *ok = NSSBase64_DecodeBuffer(NULL, &newResult,
                               (const char *)result.data, result.len);

Ich habe schon alles möglihc eprobiert, aber nie hat es funktioniert.

Hier habe ich z.B. die Struktut SECItem nachgebaut:

        public struct SECItem
        {
            public Int32 type;
            public char[] data;
            public Int32 length;
        }

Und hier die Methodendeklaration:

        [DllImport(@"nss3.dll", CharSet = CharSet.Ansi)]
        public static extern int NSSBase64_DecodeBuffer(object val, ref SECItem output, StringBuilder input, UInt32 inputLength);[/csharp

Wobei diese habe ich schon tausendmal geändert, halt aus Not mal alles ausprobiert.

Aktuell sieht der Aufruf so aus:
[csharp]                SECItem output1 = new SECItem();
                output1.data = new char[1000];
                output1.length = 1000;
...
NSSBase64_DecodeBuffer(null, ref output1, code, (UInt32)code.Length);

Das Ergebnis ist eine SafeArrayTypeMistmatchException, mit der folgenden Message:
"Das angegebene Array hat nicht den erwarteten Typ."

Kann mir hier bitte jemand helfen?

mfG benj

Thema: Form in Konsolenanwendung
Am im Forum: GUI: Windows-Forms

@herbivore...

:Dok, der fehler war zu offensichtlich, thx für den hinweis

@JAck30lena

naja, der aufbau erlaubt mir bis jetzt nichts anderes, wobei ich mir doch nochmals alles durch den kopf gehen lasse, wenn möglich werde ich es noch so umcoden, dass die gui im hauptthread läuft.


thx für die rasche hilfe.

mfG b3nj

Thema: Form in Konsolenanwendung
Am im Forum: GUI: Windows-Forms

Ok, diesen weg habe ich auch schon probiert, da der "nicht-gui-code" jedoch in dem thread laufen sollte in der er gerade läuft muss ich zwangsweise die gui in einen eigenen thread ploppen:

        static void Main(string[] args)
        {
            new Thread(delegate()
                {
                    Form form = new Form();
                    form.Show();
                    Application.Run(new Form());
                }
            );
            Console.ReadKey();
        }
wobei jetzt gar kein fesnter mehr erscheint?

mfG b3nj

Thema: Form in Konsolenanwendung
Am im Forum: GUI: Windows-Forms

Hallo,

Ich hatte heute bei einem Programm ein Problem, dieses habe ich nun auf das nötigste minimiert:
In einer Konsolenanwendung soll eine Form geöffnet werden, der Code soll jedoch trotzdem weiterlaufen. Hier wäre ein zweiter Thread nötig denke ich, aber egal was ich bastle die Form friert ein, hier der Beispielcode:

        static void Main(string[] args)
        {
            new Form().Show();
            Console.ReadKey();
        }
Der Verweis zu Windows.Forms muss halt noch hinzugefügt werden.

Weiss jemand wie ich das einfrieren der Form verhindern kann?

mfG b3nj

Thema: Kommunikation mit einem Dienst
Am im Forum: Netzwerktechnologien

Hallo,

Ich habe eine Projektmappe mit zwei Projekten, einem Windows Dienst und einem Windows-Forms-Programm.

Der Dienst verrichtet seine Arbeit im Hintergrund, die Forms-Anwendung möchte ich dazu nutzen den Status anzuzeigen (Was wo verbeitet wird/wurde). Hierfür muss ich zugriff auf die daten des dienstes haben, jedoch weiss ich nicht wie ich direkt zugriff auf ihn habe.

kurz:
weiss jemand wie ich zur laufzeit auf die objekte (m)eines windows dienstes zugreifen kann?


mfG b3nj

Thema: Mapper für .Net 3.5
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: MsSQl 2000


Hallo,

Kennt hier jemand ein einfaches Mapper-Tool um Datenbanken aus einem MSSQL-2000 server zu mappen?

die funktionalitäten können beschränkt sein, jedoch sollte die benutzung realtiv einfach sein.


vielen dank für die antworten


mfG benj

Thema: Programmierstandards (Namen, Prefixe, Regions)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

nein, da unser kleines projekt nur für uns intern was bedeutet =) d.h. wir bestimmen selbst was wie gemacht wird.

ich werd gleich mal google fragen was cls ist. =)
thx fürs stichwort


mfG benj

Thema: Programmierstandards (Namen, Prefixe, Regions)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

Ich und zwei Kollegen wollen zusammen etwas programmieren. Jetzt verwendet jeder von uns aber einen anderen programmierstil (ich z.B. fange bei allen Feldern mit _ an, alle Eigenschaften gross geschrieben und Parameternamen klein...).

ein ähnliches problem haben wir bei windows forms, ich z.B. nenne die Textbox tb, andere benutzen den prefix txt.

gibt es da irgendeinen weitverbreiteten standard? halt allgemein wegen prefixen usw.?

in klassen benutze ich immer #region Fields #endregion usw. für alle möglichen "Dinge" die in Klassen vorkommen, da habe ich auch eine feste Reihenfolge. gibt es auch hier eine lösung um klassen mehr oder weniger übersichtlich zu halten oder ist diese schon ok?



mfG benj

Thema: Webservice Objekt senden
Am im Forum: Web-Technologien

Zitat von "ikaros"
Der Service muss ein Array of Users definieren.
Dieses Array wird ja definiert, aber halt nicht vollständig wie es scheint.
Zitat von "ikaros"
Das Array benötigt das Attribut der Klasse zum Serialisieren.
Das Array hat ja eigentlich schon in seinem Namen bzw. Tagname den Klassennamen des Typs (ArrayOfUser) oder verstehe ich da etwas falsch?

Die Klasse User sollte eigentlich auch serialisierbar sein:

    [Serializable()]
    public class User

Sorry, ich bin gerade ein bisschen verwirrt. Ein Link auf ein brauchbares Dokument zu diesem Thema wäre gut, habe in google nicht viel zu der Übertragung von Objekten gefunden.

mfG b3nj

Thema: Webservice Objekt senden
Am im Forum: Web-Technologien

Hallo,

Ich arbeite gerade an einem Webservice, welcher eine Funktion "Test" besitzt. String's, Int's und andere primitive Datentypen kann ich ohne Probleme senden. Ich habe jetzt jedoch eine Klasse "User" und möchte einen User-Array in der Webfunktion zurückgeben.

Wenn ich den Code debugge dann wird ein Array zurückgegeben, welcher die Länge "1" hat. Im xml-File, das zurückgegeben wird steht jedoch das:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfUser xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <User />
</ArrayOfUser>

Wieso das? Fehler usw. gibt es keine.


mfG b3nj

Thema: Datenbankverbindung: Fehler beim Anfügen einer automatisch benannten Datenbank ...
Am im Forum: Datentechnologien

hallo,

sry, dass ich die fehlermeldung nicht mitangegeben habe, hier:

Zitat
System.Data.SqlClient.SqlException: Fehler beim Anfügen einer automatisch benannten Datenbank für die Datei C:\Programme\Microsoft Visual Studio 8\Common7\IDE\App_Data\Database.mdf. Eine Datenbank mit diesem Namen ist bereits vorhanden, die angegebene Datei kann nicht geöffnet werden, oder sie befindet sich in der UNC-Freigabe.
die Datei Database.mdf und der Ordner App_Data existieren an der genannten stelle übrigens nicht.

wie macht man es denn normalerweise wenn man eine datenbank als datei in das projekt einfügt? wird schon irgendein connection-objekt oder etwas in der art erstellt?


mfG b3nj

Thema: Datenbankverbindung: Fehler beim Anfügen einer automatisch benannten Datenbank ...
Am im Forum: Datentechnologien

Hallo,

Ich habe mal angefangen mit Webservices zu arbeiten, jetzt habe ich auch das erste mal eine datenbank als datei in ein projekt geladen.

Bild siehe Anhang

im connection-string habe ich das wie folgt zusammengebaut:

connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=""" + Environment.CurrentDirectory + @"\App_Data\Database.mdf" + @""";Integrated Security=True;User Instance=True";
hab alles probiert aber die db kann nicht geladen werden.

ich weiss nicht ob es am "debug-webserver" liegt oder an dem connectionstring. im iis habe ich es noch nicht getestet, weil das ganze sollte ja auch im debuger laufen?


mfG b3nj

Thema: int32/64 zu byte-array
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

danke für schnelle & brauchbare antwort


mfG b3nj

Thema: int32/64 zu byte-array
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

hallo

gibt eine einfache möglichkeit einen int32 zu einem byte[4] bzw einen int64 zu einem byte[8] zu konvertieren? oder muss ich da selbst eine funktion schreiben.

vielen dank

mfG b3nj


-edit-

glaub schon wieder im falschen forum erstellt, sry -> Basistechnologien und allgemeine .NET-Klassen

Thema: Kostenloser SMS-Gateway?
Am im Forum: Smalltalk

bei ****** gabs mal nen "bug" (oder wars n'"feature"?), naja auf jedenf all konnte man gratis ohne anmeldung sms mit nem selbst gewählten absender versendet werden.

eventuel gehts noch, kA

mfG b3nj

Thema: [JS] fenster für texteingabe
Am im Forum: Web-Technologien

hallo,

ich wollte ein fenster (n'popup) für eine bessere texteingabe für ein feld erstellen, dies habe ich dann auch hingekriegt, zumindest halbwegs hier mein problem:



Webseite.aspx
hier existiert eine html-textbox tbShort.
hier wird dieser js-code aufgerufen:

            function TextPopup()
            {
                window.open("TextPopup.aspx", "", "width=600,height=600").focus();
            }

das popup enthält eine html-textbox tbText, der text wird auch geladen.
irgendwann hat man ja fertig getippt, dann wird durch einen normalen html-button dieses js ausgeführt:
    function CloseF()
    {
        opener.getElementById('tbShort').value = tbText.value;
        opener.tbShort.value = tbText.value;
        window.close();
    }

was passiert?
der text aus tbText verschwindet, jedoch wird bei dem opener-fenster (meine webseite.aspx) nicht in tbShort geschrieben...

weiss vielleicht jemand wieso, oder wie man das besser lösen könnte?


mfG b3nj