Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Serverkontroll - Läsa från egen fil

Postades av 2004-12-27 11:48:53 - Rickard Robin, i forum asp.net generellt, Tråden har 11 Kommentarer och lästs av 857 personer

Hej !

Jag håller på att skriva en sådan "composite" serverkontroll och har fastnat på en grej.
Istället för att bygga upp kådsnuttar manuellt och lägga till med Page.RegisterClientScriptBlock,
så vill jag läsa allt från en textfil till en sträng, och lägga till denna sträng.
Det är så jobbigt med alla citattecken hit och dit, när man ska redigera kåden.
Mkt bättre att då ha javascriptkåden i en enskild fil.

Så jag lade helt enkelt till en custom.js fil i mitt serverkontrollprojekt, men frågan är hur kommer jag åt denna fil?
Alla sökvägar i Page.Request objektet kommer ge fel address eftersom de visar bara på
webprojektet som använder min serverkontroll.

Så hur sjutton hittar jag till katalogen där min serverkontrolls .dll fil ligger? för det är väl där jag måste läsa in min textfil ..

Hoppas ni förstår mitt problem och att det går att lösa ...

MVH Rickard


Svara

Sv: Serverkontroll - Läsa från egen fil

Postades av 2004-12-27 11:54:37 - Andreas Håkansson

Rickard,

Du använder <b>Server.MapPath</b> för att få fram relativasökvägar till ditt webbprojekt, dvs sökvägar som börjar med ditt webbprojekt som root. För att se arbeta med filen så använder du dig av diverse klasser från <b>System.IO</b> namnrymden.


Svara

Sv:Serverkontroll - Läsa från egen fil

Postades av 2004-12-27 12:08:03 - Rickard Robin

Hej och tack för det snabba svaret!

Problemet är dock att textfilen tillhör själva serverkontroll projektet (eget kompilerat projekt). I slutändan blir det ju en kompilerad dll, som man t.ex kan dra in till en webform. (Den läggs upp i toolbar i designläge efter man angett referens till denna dllfil)

Så egentligen så spelar webprojektet som används ingen roll i detta sammanhang..

Min undran är alltså var denna textfil tar vägen och hur jag kommer åt den från mitt serverkontrollprojekt... den kanske försvinner nånstans på vägen när projektet kompileras ? :o
Inte den blekaste, ...

Har försökt med dessa sökvägar för att hitta textfilen men det går inte
system.Environment.CurrentDirectory
system.AppDomain.CurrentDomain.BaseDirectory
......

Någon som vet?


Svara

Sv: Serverkontroll - Läsa från egen fil

Postades av 2004-12-27 12:56:17 - Johan Normén

Hej Rickhard.

Din fil följer inte med själva kontrollen om det inte är så att du embedar den till din DLL (med andra ord ser till så den bakas in som en resurs.) att föredra i detta fall.

Annars får du kopiera filen för hand o lägga den i ditt web projekt där din kontrol kommer leta efter den. ex. ~/data/mintextfil.txt eller liknande.

Mvh Johan


Svara

Sv:Serverkontroll - Läsa från egen fil

Postades av 2004-12-27 13:03:49 - Andreas Håkansson

Rickard,

Om du nu har gjort som Johan sa - lagt till din fil som en Embedded Resource i ditt projekt (genom att ändra Build Action på filen i Visual Studio) så kommer du åt filen genom att använda <b>GetManifestResourceStream</b> metoden som finns på ditt <b>Assembly</b> objekt. Du kommer lämpligast åt din assembly genom att använda <b>GetExecutingAssembly</b> metoden, som är en statisk metod på Assembly klassen.

Allt detta hittar du i <b>System.Reflection</b> namnrymden. Till GetManifestResourceStream metoden skall du skicka in namnet på din fil, tillsammans med den namnrymnd som den hamnar i. Om du root-namnrymden i ditt projekt heter MinRoot och filen heter MinJS.js så skickar du med MinRoot.MinJS.js som värde.

GetManifestResourceStream returnerar en <b>Stream</b> som du sen kan skicka vidare till t.ex en <b>StreamReader</b>, som du hittar i <b>System.IO</b> namnrymden, för att läsa av din fil.

Hoppas det löser sig!


Svara

Sv: Serverkontroll - Läsa från egen fil

Postades av 2004-12-27 14:00:48 - Rickard Robin

Johan och Andreas jag tackar er ödmjukast - jag hade aldrig löst det här själv. Det funkar helt klockrent och ni skrev väldigt pedagogiskt så jag förstod vad det var som hände. Skulle ni vara här nu skulle ni få varsin stor puss !!!

Såhär blev då den slutgiltiga lösningen, då filen heter "customjs.js" :
<code>
'** register my custom javascript **
Dim rdr As IO.StreamReader
Dim asm As System.Reflection.Assembly
Dim cjs As String

asm = asm.GetExecutingAssembly()
rdr = New IO.StreamReader(asm.GetManifestResourceStream("AvcTree.customjs.js"))
cjs = rdr.ReadToEnd()

Page.RegisterClientScriptBlock("MyJS", cjs)

rdr.Close() : rdr = Nothing
asm = Nothing
cjs = Nothing
</code>

Hoppas att andra kan ha nytta av lösningen, tack än en gång för svaren och tiden ni bjöd på!


Svara

Sv:Serverkontroll - Läsa från egen fil

Postades av 2004-12-27 14:11:20 - Andreas Håkansson

Rickard,

Som "tack" för mitt deltagande i ditt problem så skall jag kräva en motprestantion från din sida. Detta gör jag i egenskap av Moderator här på pellesoft. Vad jag skulle vilja att du gör är att du från och med nu tar för vana att markera dina trådar enligt deras gällande status.

Detta gör du genom att markera trådar som <b>Löst</b> om de innehåller fråga + ett svar som du är nöjd med, samt som <b>Stängd</b> om du har startar en tråd som du inte fick något svar som du var nöjd med men har slutat att övervaka den tråden.

Dessa små saker gör det väldigt mycket enklare för andra besökare, både de som letar efter svar själv men även de som hjälper till att svara på frågor, genom att de enkelt kan se statusen på tråden. Du hjälper även de som svarat i din tråd med att förbättra sin statistik då deras "medverkar i lösta trådar" räknare ökar.


Svara

Sv:Serverkontroll - Läsa från egen fil

Postades av 2004-12-27 14:21:12 - Andreas Håkansson

Rickard,

Vill även passa på och ge en del små tips på hur du kan optimera din kod. Eftersom GetManifestResourceStream finns som en statisk-metod, dvs en metod som du kan anropa direkt på klassen och inte behöver ett objekt, så finns det ingen vits att först skapa ett <b>Assembly</b> objekt.

        '** register my custom javascript **
        Dim rdr As IO.StreamReader
        Dim cjs As String

        rdr = New IO.StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("AvcTree.customjs.js"))
        cjs = rdr.ReadToEnd()

        Page.RegisterClientScriptBlock("MyJS", cjs)

        rdr.Close()


Vidare behöver du inte sätta dina variabler till <b>Nothing</b> som du behövde i VB då .NET använder något som heter <b>Garbage Collection</b>, läs mer om detta här http://www.pellesoft.se/documents/pageblank.aspx?id=12004

Ha de bra!


Svara

Sv: Serverkontroll - Läsa från egen fil

Postades av 2004-12-27 15:21:02 - Rickard Robin

Andreas,

Tackar, men:

Angående garbagecollectorn, är det inte bättre att stänga mina objekt på en gång och tvinga dem till nothing, (med tanke på att det bl.a är en instantierad fil-stream läsare, för att snabbt fria upp minne) ?
Vet att collectorn ligger och kör sina disposes och hämtar skräp då och då, men det kändes bättre att tvinga upp dem på en gång .....


Svara

Sv:Serverkontroll - Läsa från egen fil

Postades av 2004-12-27 15:27:41 - Andreas Håkansson

Rickard,

Att stänga dem och anropa <b>Dispose</b>-metoden på de objekt som stöder det, är något som du alltid skall göra. Men att sätta dem till <b>Nothing</b> medför inget, eftersom det sker automatiskt när variablen kommer utan för <b>scope</b>.

Med scope innebär den region av kod som variablen kan nås, t.ex om du skapar en variable inne i en metod så är den enbart tillgänglig inne i samma metod, dvs den har metod-scope. Så när en variabel hamnar ur scope, t.ex när du lämnar metoden, och det inte finns några andra referenser till den (det skulle det kunna finnas om du skickat vidare en lokal variablen (om det är en reference-type) någon annanstanns och det då finns ytterligare en aktiv root kvar till minnet som variabeln använder. Även i detta fallet skulle <b>Nothing</b> inte göra någon skillnad för det finns en aktiv root någon annanstanns.


Svara

Sv: Serverkontroll - Läsa från egen fil

Postades av 2004-12-27 15:34:33 - Rickard Robin

Okej då förstår jag, jag trodde nämligen att när man satte ett objekt till nothing -
så anropades .Dispose funktionen automatiskt först...... Inte tvärtom :o
Självklart så försöker jag alltid stänga objekten (t.ex ado.net objekt, streamläsare etc)


Svara

Sv:Serverkontroll - Läsa från egen fil

Postades av 2004-12-27 15:40:47 - Johan Normén

Rickard,

Var bara försiktig när du kör MemmoryStream, för den är lite annorlunda gällande Close.
Nu kör du ju inte denna, men det kan ju komma tiden då du vill. Det som då händer när du kör close är att datan du nyttjar oxå dör. Ex om du kör MemmoryStrem till en Bitmap så dör denna bitmap om du kör close. Lite knöligt det där. Dock är det ju skillnad om man kör stateles eller kör i state.
DVS, ha kontakt med huvudkällan eller ej.
Web är stateless (tillståndslöst) medans winform hållet state (tillstånd).

Nu har vi nog fått in de flesta paranteser här ;-) Så snart är du Stream Master på .Net ;-)

Mvh Johan


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 602
27 953
271 705
532
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies