Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: BinaryWriter

game-over [22.08.2013 20:17:15]

#

Hei!

Olen tekemässä ohjelmaa, joka avauksen jälkeen luo uuden exe -tiedoston samaan hakemistoon, missä alkuperäinen ohjelma on. Ongelmaksi ilmenee, kun alla oleva koodini luo 16bit-tiedoston. Kuinka koodia pitäisi muuttaa, jotta se tekisi 32bit-tiedoston? Osaisiko joku auttaa?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Malli
{
    class Program
    {

        static void SaveCurretTime()
        {
            string teksti = "Hello World";

            FileStream fs = new FileStream("time.exe", FileMode.Create);
            BinaryWriter bw = new BinaryWriter(fs);

            bw.Write(teksti);


            bw.Close();
            fs.Close();
        }
        static void Main(string[] args)
        {
            SaveCurretTime();
        }
    }
}

Metabolix [22.08.2013 21:12:22]

#

Se, että tiedoston pääte on .exe, ei tarkoita, että tiedostossa olisi ohjelma. Myöskään luokka BinaryWriter ei tee maagisesti ohjelmatiedostoja vaan yksinkertaisesti kirjoittaa tiedostoon binäärimuotoista dataa. Nykyinen koodisi ei siis tee minkäänlaista ohjelmaa vaan ainoastaan tallentaa tiedostoon tekstin "Hello, World!". Pääset samaan tulokseen, kun kirjoitat tekstin Muistiolla ja tallennat sen .exe-päätteisenä. Jos Windows luulee tuota 16-bittiseksi ohjelmaksi, se on väärässä. Jos itse luulet tuolla tavalla tekeväsi ajettavia ohjelmia, olet pahasti hukassa. Mitä siis edes yrität tehdä ja miksi?

Rox [23.08.2013 16:47:15]

#

Oletetaan että toi sun luoma exe tiedosto aukeais, mitä sen pitäis tehdä :D

Kannattaa tutustua CodeDOM kirjastoon ja tähän http://msdn.microsoft.com/en-us/library/system.io.file.writeallbytes.aspx jos haluat ohjelmia luoda.

Ja toki riippuu mitä haluat tehdä, mutta kannattaa myös tsekata Mono.Cecil.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta