[ erkan @ 07.09.2005. 09:36 ] @
Pozdrav svima,
na koji nacin mogu txt fajlove, html fajlove i ostalo, sto inace koristim
i prikazujem u WIN aplikaciji (C#), 'spakovati' u neki dll ili slicno kako
ne bi bili dostupni onom ko koristi aplikaciju (kako ih ne bi izmjenio) a da
im mogu nesmetano pristupati iz same aplikacije?
[ jablan @ 07.09.2005. 09:57 ] @
Fajl uključiš u projekat i postaviš mu build action na embedded resource.

Posle toga mu iz koda pristupaš pomoću metode GetManifestResourceStream . Proguglaj malo, sigurno ćeš naći primere.
[ adnan78 @ 08.09.2005. 10:38 ] @
Ja sam bas skoro to radio za xml fajlove.

Znaci stavis ga kao sto ti je Jablan rekao na embedded resource a onda kada hoces da ga povuces...


Code:

XmlDocument xmlAccountsRq = new XmlDocument();
System.IO.Stream stream;
stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("QuickBooksExport.Accounts.xml");
xmlAccountsRq.Load(stream);



S tim da je bitno da napises tacan namespace za file znaci osnovni namespace za moju aplikaciju je bio QuickBooksExport (osnovni namespace) pa ime fajla.


Pozdrav,

[Ovu poruku je menjao adnan78 dana 08.09.2005. u 11:42 GMT+1]
[ erkan @ 12.09.2005. 09:04 ] @
Pozdrav,
hvala vam, malo sam iscitao o tome i probao.
Imam sada dva problema.
Naime, integrisem html fajl, koji sada u svom scriptu
poziva nekakve slike, i njih sam integrsisao u projekat
ali nista, ne moze da ih 'povuce'.
Npr. u html kodu ima:

Code:
<img SRC="intro.jpg" align = center></img>


ali ne mogu da prikazem tu sliku iako i nju integrisem ...
Dakle, prikaze html stranicu (u browser kontroli koju sam uvukao') ali ne i slike.
Drugi problem mi je sto prikaz html stranice (integrisane) ide vise nego presporo.
Koristim sljedeci nacin:

Code:

private void ShowHtmlContent()
{
 StreamReader imgStream = null;            
            Assembly a = Assembly.GetExecutingAssembly();
            imgStream = new StreamReader( a.GetManifestResourceStream("EmbeddedResources.1.html"));
            if(imgStream == null)
            {
                MessageBox.Show("Error resource");
                return;
            }
            
            NavigateBrowser();
            IHTMLDocument2 hDoc2 = (IHTMLDocument2)browser.Document;

            while(imgStream.Peek() >= 0)
                hDoc2.write(imgStream.ReadLine());
}

private void NavigateBrowser()
        {
            int nula = 0;
            object OZero = nula;
            string prazan = "";
            object empty = prazan;
    
            
            browser.Navigate("about:blank", ref OZero, ref empty, ref empty, ref empty);
        }
        


Ali treba i do 20 sekundi dok prikaze jednostavnu stranicu.
Ako istu stranicu povucem sa diska bude skoro momentalno!?
[ dusty @ 12.09.2005. 09:13 ] @
Da snimis stranicu kao MHTML ?
[ erkan @ 12.09.2005. 09:22 ] @
Hm, interesantno.
Sta da odradim?
Znam da doc file moze iz WORD-a, a kako za html file?
[ jablan @ 12.09.2005. 10:05 ] @
Što se brzine tiče, probaj da pročitaš ceo fajl u string, pa da ga prikažeš, umesto liniju po liniju.

Što se slika i MHT-a tiče, bojim se da to neće moći, ili bar neće tek tako moći da ga prikaže u integrisanom browseru. Meni prva pada na pamet ideja da registrujem protokol i u svojoj aplikaciji server za taj protokol, ali vrlo moguće da postoji i jednostavnije rešenje.
[ erkan @ 12.09.2005. 10:13 ] @
To sam vec probao da upisem cijeli string odjednom ali je stvar ista...
Code:
hDoc2.write(imgStream.ReadToEnd());


...i dalje je sporo.
[ dusans @ 12.09.2005. 11:27 ] @
Izgleda da nešto ne funkcioniše kako treba kod tebe, ja sam probao ovaj tvoj kod i za fajl od 50kb učitavanje traje oko 50 ms prvi put i zanemarljivo svaki sledeći, a za fajl od 13 MB učitavanje traje oko 2 sekunde i prikaz još 1 sekund prvi put, oko 500 ms svaki naredni put (u pitanju je word dokument koji se prikazuje kao tekst, kuke i kvake - nemam toliki HTML).
Učitaj prvo sadržaj u string i vidi koliko to traje.
Upiši učitani string u sadržaj dokumenta pa vidi koliko to traje.
Javi nam rezultate pa ćemo videti.
[ erkan @ 12.09.2005. 12:00 ] @
Ucitao sam drugi htm file i radi dobro, a sa ovim od prije
je spor mozda zbog toga sto zahtjeva veliki broj slika
koje treba da ucita a ne moze da ih nadje?!
---
Znaci, problem brzine je mozda rijesen, ali je problem ucitavanja
slika i dalje pending... :)
[ jablan @ 12.09.2005. 12:15 ] @
A da, prilikom startovanja programa, iskopiraš slike u npr Windows/Temp, u neki Temp direktorijum, pa da ih vučeš sa diska?
[ erkan @ 12.09.2005. 12:42 ] @
Pa, eto, ako ne uspijem drugacije, moracu tako
mada mi se ne svidja to rjesenje.
To dalje povlaci izmjenu teksta html fajla dinamicki, jer lokacija slika zavisi od toga gdje se instalira
aplikacija. Mora se raditi nesto poput
Code:

content = htmlTekst.Replace("images/", "nesto....\images/");
...




[Ovu poruku je menjao erkan dana 12.09.2005. u 13:47 GMT+1]
[ erkan @ 13.09.2005. 09:39 ] @
Ima jos jedna stvar.
Pretpostavimo da je html velik i za 'navigaciju' po njemu
postoje definisani anchor-i.
Da li je moguce koristiti te definisane anchore za pristup
npr. nekom podnaslovu u sredini html-a?
Klasicni fazon bi bio:
Code:
C:\html\nekiFile.html#nazivAnchora

Da li je moguce istu stvar odraditi sa embedovanim html-om?
[ jablan @ 13.09.2005. 10:01 ] @
Da, mislim da je dovoljno da onda za HREF staviš #imeAnchora, bez imena fajla.
[ erkan @ 13.09.2005. 10:31 ] @
Mislim da te nisam razumio!
Ne kontam kako na taj nacin
mozes da 'kazes' browser kontroli da otvori integrisani fajl npr. 1.html
koji ima nekoliko anchora i pozicionira se na specificni anchor.
Mozes li molim te napisati to?
[ jablan @ 13.09.2005. 10:52 ] @
Code:
<body onload="location.href='#test'">
    <a name="test">sdf</a>
</body>

A verovatno možeš i iz C# tako što uradiš opet jedan iHtmlDocument2.navigate pošto učitaš sadržaj u browser.

[Ovu poruku je menjao jablan dana 13.09.2005. u 11:53 GMT+1]
[ erkan @ 13.09.2005. 11:19 ] @
Hvala ti, mislim da ce mi to pomoci