Avatar billede Slettet bruger
17. december 2003 - 15:56 Der er 17 kommentarer og
2 løsninger

Resources. Put en fil i mit program

Hey...

Jeg søger noget kode som kan putte en fil(Billed, Dokument o.s.v) ind i mit program også når man vil trakke filen ud igen. Jeg ved at man kan gøre dette med en resource, men kan ikk finde noget kode/guide om dette.
Kan nogle hjælpe mig???
Man skal helst kunne gøre det med alle slags fil typer.

Hilsen
911help
pivCr3w

PS: Bruger MS VS.NET
Avatar billede Slettet bruger
17. december 2003 - 15:57 #1
PSS: Har prøvet at søge på:
www.csharphelp.com
www.csharp-corner.com
Avatar billede thomasandersen Nybegynder
17. december 2003 - 16:00 #2
Prøv at kigge denne her igennem, og se om det ikke hjælper:
http://www.eksperten.dk/spm/411150
Avatar billede nielsbrinch Nybegynder
17. december 2003 - 16:00 #3
Citat fra odegaard:

Hvis du bruger Visual Studio.NET kan du embedded dem i projektet (tilføj dem til projektet, og vælg i properties at de skal embeddes).
Herefter kan de hentes med:
System.IO.StreamReader bitmapStream = new System.IO.StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("pic1.bmp"));

Se i øvrigt: http://www.eksperten.dk/spm/411150
Avatar billede Slettet bruger
17. december 2003 - 16:18 #4
Har jeg kikket på...

Men hvis jeg prøver at  sætte f.eks et billed ind med flg. kode:

Bitmap picDown = new Bitmap(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("resprog.69.jpg"));
pictureBox1.Image = picDown;

Giver den mig en fejl:
************** Exception Text **************
System.ArgumentException: 'null' is not a valid value for 'stream'.
  at System.Drawing.Bitmap..ctor(Stream stream)
  at resprog.Form1.Form1_Load(Object sender, EventArgs e) in c:\documents and settings\stoffer\dokumenter\visual studio projects\resprog\resprog\form1.cs:line 92
  at System.Windows.Forms.Form.OnLoad(EventArgs e)
  at System.Windows.Forms.Form.OnCreateControl()
  at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
  at System.Windows.Forms.Control.CreateControl()
  at System.Windows.Forms.Control.WmShowWindow(Message& m)
  at System.Windows.Forms.Control.WndProc(Message& m)
  at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
  at System.Windows.Forms.ContainerControl.WndProc(Message& m)
  at System.Windows.Forms.Form.WmShowWindow(Message& m)
  at System.Windows.Forms.Form.WndProc(Message& m)
  at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
  at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
  at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


Kan ikk lige hitte ud af det...
Avatar billede Slettet bruger
17. december 2003 - 16:20 #5
Har fået det med billede til at virke.. taste fejl...

Men hva med andre fil typer???
Avatar billede wisen Nybegynder
17. december 2003 - 16:22 #6
.. jeg har lavet et lille projekt, hvor jeg har en .txt fil som er en "embedded ressource" - jeg benytter følgende kode til at læse filen igen :

Stream resourceStream = thisAssembly.GetManifestResourceStream("SQLSchema.emptyPetal.txt");
StreamReader reader = new StreamReader(resourceStream);
string strPetal = reader.ReadToEnd();

... filen hedder "emptyPetal.txt" - og mit namespace hedder SQLSchema.

Måske du kan bruge det :)
Avatar billede wisen Nybegynder
17. december 2003 - 16:23 #7
... følgende læser et embedded ikon :

Image img = Image.FromStream(assembly.GetManifestResourceStream("MatrixCtrl.Columns.Icons.FixedColumn.ico"));
Avatar billede Slettet bruger
17. december 2003 - 16:37 #8
wisen: Har prøvet din kode med teksten filen. Men den kommer med fejl:
C:\Documents and Settings\Stoffer\Dokumenter\Visual Studio Projects\miniTro\miniTro\Form1.cs(80): The type or namespace name 'thisAssembly' could not be found (are you missing a using directive or an assembly reference?)

kode:
Stream resourceStream = thisAssembly.GetManifestResourceStream("miniTro.babe.txt");
StreamReader reader = new StreamReader(resourceStream);
string strPetal = reader.ReadToEnd();

Har prøvet at ændre "thisAssembly" til "miniTro" men det virker ikk....
Avatar billede wisen Nybegynder
17. december 2003 - 16:40 #9
hehe - prøv med følgende :

System.Reflection.Assembly assembly = typeof(this).Assembly;

.. givet at den ressource du har embedded ligger i samme assembly som "this"
Avatar billede wisen Nybegynder
17. december 2003 - 16:41 #10
.. du kan også bruge "GetExecutingAssembly()" - men kun hvis filen rent faktisk ligger i din .exe fil :)
Avatar billede omen Nybegynder
17. december 2003 - 17:20 #11
En enklere måde som du måske vil bruge er bare:
pictureBox1.Image = new Bitmap(GetType(),"1.jpg");

Tilføj 1.jpg til dit projekt, sæt Compile Action til Embedded Resource.
Hvis du vil have billederne i en mappe der hedder 'pics'(evt), skal du bruge "pics.1.jpg"!

Og nu har jeg ikke læst alle indlæg, men jeg poster lige min kode her(du skal stadig tilføje filen til dit projekt og sætte den ene property ordenligt):

Bitmap mitPic = new Bitmap(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("ditNameSpace.evtMappe.1.jpg"));
pictureBox1.Image = mitPic;
Avatar billede Slettet bruger
17. december 2003 - 17:45 #12
Det med billeder har jeg fået tilæ at funke...
Nu mangler jeg bare at det til at virke med andre fil formater. Vil gerne(hvis det lave sig gøre) kunne trække filer ud af min exe, som jeg har puttet ind via Compile Action til Embedded Resource. Også skal brugeren/propgrammet vælge hvor de skal gemmes(Dokumenter, Billder og måske musik(MP3, Midi)).
Har nogen noget/guide til det?
Avatar billede Slettet bruger
17. december 2003 - 17:50 #13
PSSS: Vil gerne kunne pakke fil(erne) ud igen...
Avatar billede omen Nybegynder
17. december 2003 - 17:54 #14
Hmm, interessant. Det vil jeg lige kigge på, er jeg også nysgerrig over!
Avatar billede wisen Nybegynder
18. december 2003 - 09:52 #15
.. hvis du på din form har en "SaveFileDialog" som hedder "saveFileDialog1" så kan nedenstående snip trække en embedded text fil ud af din assembly og gemme den igen med et navn og en placering som brugeren bestemmer....

if( saveFileDialog1.ShowDialog() == DialogResult.OK )
{
  StreamWriter writer = new StreamWriter( saveFileDialog1.OpenFile() );
  Assembly thisAssembly = this.GetType().Assembly;
 
  Stream resourceStream = thisAssembly.GetManifestResourceStream("SQLSchema.emptyPetal.txt");
  StreamReader reader = new StreamReader(resourceStream);
  string strPetal = reader.ReadToEnd();

  writer.Write( strPetal );
  writer.Close();
}

.. bruger det selv i et mindre projekt :)
Avatar billede wisen Nybegynder
07. januar 2004 - 12:49 #16
... har ud fået det til at virke ?
Avatar billede Slettet bruger
07. januar 2004 - 13:42 #17
undskyld... havde glemt det...
Avatar billede wisen Nybegynder
07. januar 2004 - 13:59 #18
hehe, det er OK - takker for point :)
Avatar billede nielsbrinch Nybegynder
09. januar 2004 - 15:50 #19
også jeg, dem havde jeg vist ikke fortjent :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester