Avatar billede calundan Nybegynder
07. november 2002 - 22:29 Der er 5 kommentarer og
1 løsning

Execute / ExecuteGlobal

Findes der nogen måde hvorpå man kan lave selvmodificerende kode, som man kan vha. Execute og ExecuteGlobal i ASP 3.0 (VBScript)
Avatar billede simon.ulsnes Nybegynder
07. november 2002 - 22:36 #1
Det kan godt være det er muligt, men det er overhovedet ikke smart. Hvad er det præcist du vil gøre? Der er garanteret en smartere måde... :-)

// Simon
Avatar billede calundan Nybegynder
07. november 2002 - 22:49 #2
Det drejer sig primært om realtime realisering af sprogkonstanter fra en database. Jeg har konstanter liggende i en SQL server tabel, der repræsenterer en sprog streng.

eks (som i ASP 3.0)
UK
const str_news1 = "News"
const str_news2 = "Newsheader"

DK
const str_news1 = "Nyheder"
const str_news2 = "Nyhedsoverskrift"

------

I koden benyttes konstanterne som alm. flet ..."&str_news1&"...

Problemet er de steder hvor konstanterne ligger i en tabel, hvorfor jeg skal have str_news1 til at blive til "Nyheder" på dansk og "News" på engelsk.

pt. benyttes følgende funktion

function Realize (str)
  Execute ("test=" & str)
  Realize = test
end function

-----------

Dette er blot et eksempel af mange...
Avatar billede simon.ulsnes Nybegynder
07. november 2002 - 22:57 #3
Hvorfor ikke lave en dynamisk løsning? Det er for besværligt og ressourcekrævende at lave noget der genererer ASP.NET-filer.

Jeg ville umiddelbart foreslå en løsning, hvor du henter en variabel fra QueryString'en. Du kan også alternativt vælger ud fra brugerens browsers sprogindstillinger.

// Simon
Avatar billede jakobandersen Nybegynder
07. november 2002 - 23:10 #4
I f.eks. C# er der ingen mulighed for at eksekvere kode dynamisk ala VBScript Execute, men hvis du f.eks. bruger JScript er der Eval funktionen som har samme effekt, jeg ved ikke hvordan det er med VB.NET om der findes noget lignende.

Men udfra hvad du fortæller her lyder det som om du skal kigge lidt her:
http://samples.gotdotnet.com/quickstart/aspplus/doc/localizingapps.aspx
Avatar billede calundan Nybegynder
07. november 2002 - 23:16 #5
Problemet er at løsningen er oversat (ca. 14000 ord i ca. 3000 konstanter) der er over 500 kørende websites der benytter koden, der har disse konstanter (dog kun ca. 40) i databasen. Web sitene er pt. dedikeret til kun ét sprog, men jeg har en option på vores oversættelsesværktøj der gør at jeg kan branche alle vores som filer til at indeholde alle sprog varianter hvilket gør at man kan skifte sproget på alle sider (et administrations værktøj) vha. af en urlparameter.
Problemet er databasen. Eftersom der er flere samtidige brugere på systemet kan jeg ikke lægge de oversatte strenge hårdt ned i databasen, derfor var Realize funtionen helt ideel til denne type funktionalitet.

Desforuden har jeg et module der tillader at brugere kan benytte valgfrie webservices komplet med definition af parametre og retur værdier, der ydermere kan nestes således at output fra en webservice bliver en del af output på en efterfølgende webservice. Denne funtionalitet kan jeg på ingen måde forudsige, så derfor har jeg én funtion "sendSoapRequest" på en soap klasse, der tager 2 parametre wsnavn og et array af properties. Jeg ved ikke hvad disse parametre er hvad de hedder deres typer og hvad de skal benyttes til. Den hurdle er faktisk meget simpel at overkomme med denne type selvmodificerende kode og jeg kan faktisk få dette at fungere (kaldene til webservicen) på meget få linier kode når jeg benytter Execute til realisering af kode, jeg ikke aner hvordan ser ud.
Avatar billede jakobandersen Nybegynder
07. november 2002 - 23:37 #6
Du kan godt lave din Realize funktion i .NET, den kommer til at se sådan her ud


class minToolBox{
  function Realize(minStreng : String){
    return eval(minStreng)
  }
}

Ovenstående er JScript, men da du i frameworket sagtens kan benytte klasser skrevet i andre sprog er det underordnet hvilket sprog du bruger. Jeg går udfra at du ikke benytter mere avancerede ting end variabel tildeling da koden selvfølgelig vil bliver tolket som JScript og derfor vil det nok ikke være til megen nytte for dig.

MEn som sagt smid ovenstående i en js fil og herefter har du din Realize funktion tilgængelig i klassen minToolBox
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
Kurser inden for grundlæggende programmering

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