Avatar billede jpi Mester
12. juli 2007 - 00:40 Der er 5 kommentarer og
1 løsning

Blande streng og kode

Jeg har en tekst der skal bruges ved afsendelse af en mail.
Teksten vil jeg gerne lægge i en database, så den kan redigeres uden at skulle rette i selve koden. Men teksten består også at nogle variabler. F.eks.

dim tekst as string
tekst = "Hej " & person.navn & " !"

Kan man på nogen måde lægge koden med ind i strengen i databasen, så man slipper for at skulle bryde teksten op i mindre bidder og dermed gøre det ret statisk alligevel ?
Avatar billede neoman Novice
12. juli 2007 - 01:07 #1
Jeg havde en applikation en gang også med emails som skulle rekonfigureres af og til. Det endte med et sæt firkantede paranteser [] til markering af et lille antal definerede "variable", så som afsender, modtager, dato osv osv , indsat i mail-teksten efter behov, og som så blev parset ud og erstattet af db-værdierne inden afsendelse. Måske kan du bruge ideen.
Avatar billede jpi Mester
12. juli 2007 - 10:54 #2
Ja, det kunne være en god mulighed. Jeg venter lidt og ser om der er andre muligheder, ellers bliver det dit forslag.

Du hører nærmere...
Avatar billede snepnet Nybegynder
12. juli 2007 - 11:37 #3
Hvis du angiver dine variable sådan her:
string template = "Jeg hedder {0} og er {1} år";
Kan du køre en
string result = String.Format(template, "Kaj", 100);
Mvh
Avatar billede jpi Mester
12. juli 2007 - 12:24 #4
snepet > Det ser fint ud, men er ikke særlig dynamisk anvendelig, da man SKAL bruge den rigtige rækkefølge af variablerne, og så kan man ikke "frit" skrive teksten om uden at skulle ændre i koden.

neoman > Jeg har skrevet koden til funktionen og er nu ved at lægge al teksten i databasen med "variablerne". Send en svar og du får point.

Her er lidt kode, som det ser ud:

function UdskiftVariable(tekst as string, udl as Udlejning) as string
        tekst = tekst.Replace("[KontaktpersonNavn]", udl.KontaktpersonNavn)
        tekst = tekst.Replace("[StartDatoTidLang]", udl.StartDatoTid.ToString("f"))
        tekst = tekst.Replace("[SlutDatoTidLang]", udl.SlutDatoTid.ToString("f"))
        return tekst
end function

Hvus man bare skriver nok af de linier inde i funktionen kan man lave mere eller mindre hvad som helst.

Tak for svarene.
Avatar billede neoman Novice
12. juli 2007 - 12:41 #5
here goes:)
Avatar billede snepnet Nybegynder
12. juli 2007 - 13:09 #6
Du kan skrive om alt det du gider.... Dette her går lige så fint:
Hej {12}, har du ikke fødselsdag den {4}
Din interface er bare defineret ved rækkefølgen som så rent programmatisk er statisk.
Men ja - det kunne godt være praktisk hvis man kunne navngive istedet - f.eks.:
Hej {name} osv...
Mvh
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