Bitfehler in Windows XP?



  • Hallo!
    Ich hab mir gerade über eine Schleife einen 22MB großen String erzeugt (für eine Datenbank). Diesen hab ich mir aus einem C#-Programm heraus in die Zwischenablage kopieren lassen, von dort in Notepad.
    Dort der wohl ungewöhnliche Fehler: "Es sind Nicht-ANSI-Zeichen im Text!"
    Die Schleife ist ok. Irgendwo in der Erzeugung sind da ein paar Bits umgekippt. Immerhin 7 Stück in den 22MB.
    Hab ich so einen schlechten RAM? Da müsste Windows doch ständig abstürzen? Oder gibt es noch andere Möglichkeiten dieses Zufalls?

    Übrigens bei weiteren Versuchen waren es immer andere Stellen (es liegt also bestimmt nicht an der Schleife).

    Grüße

    der Praktikant



  • Im .NET ist der Datentyp CHAR nicht ein Byte gross,
    sondern 2 Byte!?

    mfg sclearscreen



  • ich benutze aber nirgends irgendwelche sonderzeichen.



  • Da ein Zeichen im .NET aus 2 Byte besteht kann es aber sein das der Editor immernoch von 1nem Byte ausgeht deshalb, vielleicht andere Zeichen

    Stichwort .NET arbeitet mit nem Unicodezeichensatzt 2Byte pro Zeichen
    der Editor mit ASCII - Zeichen 1Byte pro Zeichen es wäre dann klar
    warum Du Zeichensalat bekommst

    mfg



  • sclearscreen schrieb:

    es wäre dann klarwarum Du Zeichensalat bekommst

    Würde ich einen Zeichensalat bekommen, wäre das eine Erklärung. Da ich aber nur etwa 7 falsche Zeichen bei 2.000.000 Zeichen insgesamt habe, kann von einem Salat nicht die Rede sein.



  • Verstehe ich das richtig, dass du den Unicode-String aus der Zwischenablage in notepad eingefügt und versucht hast, die Textdatei mit dem ANSI-Zeichensatz zu speichern, woraufhin du die Meldung erhalten hast, dass bei dieser Umkodierung Zeichen verloren gehen werden?
    In dem Fall musst du ja irgendwie Unicode-Zeichen erzeugt haben, die sich nicht mit dem ANSI-Zeichensatz decken und somit auch nicht in diesen umkodierbar sind.
    Wie hast du den String denn erstellt? Mit Sicherheit werden da nicht irgendwelche Bits einfach umgekippt sein. 🙂



  • string s = "";
    for(int i=10;i<100000; i++)
    {
        s += "insert into table (column1, column2, column3) "+
        "values ("+i+",'varchar',sysdate);"+Environment.NewLine;
    }
    Clipboard.SetDataObject(new DataObject(s));
    

    Irgendwie schon komisch.


Anmelden zum Antworten