Avatar billede dk_akj Nybegynder
07. februar 2002 - 08:36 Der er 15 kommentarer og
1 løsning

Lave en streng om til en variabel

Jeg mener engang at have brugt en funktion der kunne fjerne quotes omkring en streng så VB opfattede den som en variabel, her er et eks.


Dim s_1 As String
Dim s_2 As String

s_1 = "Ja"
s_2 = "Virker det ?? & s_1" ' i den rigtige kode vil s_2 blive indlæst fra en fil


MsgBox s_2

Jeg får flg. resultat:
Virker det ?? & s_1

Det jeg gerne ville have haft var:
Virker det ?? Ja

Avatar billede terry Ekspert
07. februar 2002 - 08:38 #1
Msgbox s_2 & S-1
Avatar billede terry Ekspert
07. februar 2002 - 08:39 #2
Msgbox s_2 & S_2
Avatar billede torbenmelander Nybegynder
07. februar 2002 - 08:39 #3
s_2 = "Virker det ???" & s_1
Avatar billede terry Ekspert
07. februar 2002 - 08:39 #4
shi. its not going so well today

Msgbox s_2 & S_1
Avatar billede terry Ekspert
07. februar 2002 - 08:40 #5
Or

Msgbox s_2 & & " " & S-1
Avatar billede terry Ekspert
07. februar 2002 - 08:40 #6
!!!
We are getting there!

Msgbox s_2 & " " & S-1
Avatar billede proaccess Nybegynder
07. februar 2002 - 08:41 #7
Dim s_1 As String
Dim s_2 As String

s_1 = "Ja"
s_2 = "Virker det ?? " & s_1 ' i den rigtige kode vil s_2 blive indlæst fra en fil


MsgBox s_2
Avatar billede proaccess Nybegynder
07. februar 2002 - 08:42 #8
Du skal have s_1-variablen uden for approstrofferne...
Avatar billede dk_akj Nybegynder
07. februar 2002 - 08:43 #9
Ja det med at s_1 skal være uden for quotes ved jeg godt.

Jeg laver lige et nyt eks så i kan se hvad jeg mener.
Avatar billede dk_akj Nybegynder
07. februar 2002 - 08:48 #10
Dim s_1 As String
Dim s_2 As String
Dim ls_error
s_1 = "Ja"

s_2 = iniFile.GetProfileString("test.ini", "test", "s_1", "", ls_error)


MsgBox s_2

' code til inifil.bas
Option Explicit

Private Declare Function GetPrivateProfileString Lib "kernel32" _
    Alias "GetPrivateProfileStringA" _
  (ByVal lpApplicationName As String, _
    ByVal lpKeyName As Any, _
    ByVal lpDefault As String, _
    ByVal lpReturnedString As String, _
    ByVal nSize As Long, _
    ByVal lpFileName As String) As Long
   
   
   
   


Public Function GetProfileString(ByRef iniFile As String, ByVal section As String, ByVal key As String, ByVal default As String, ByVal error As String)

Dim r As Long
Dim ret As String



ret = Space$(32)
r = GetPrivateProfileString(section, key, default, ret, Len(ret), iniFile)

ret = Left$(ret, r)

If ret = error Then
    MsgBox ("Fejl i " & iniFile & vbCrLf & "I sectionen " & section & " blev key " & key & " ikke fundet.")
End If

GetProfileString = ret

End Function

' dette skal stå i inifilen
[test]
s_1 = Virker det ?? & s_1

' resultatet af msgbox skal nu være: Virker det ?? Ja

Håber det var en lidt bedre formulering
Avatar billede proaccess Nybegynder
07. februar 2002 - 08:52 #11
s_2 = iniFile.GetProfileString("test.ini", "test", s_1, "", ls_error)
Avatar billede dk_akj Nybegynder
07. februar 2002 - 08:57 #12
Proaccess: Hvad får du når du prøver det ??
Avatar billede proaccess Nybegynder
07. februar 2002 - 09:02 #13
Jeg har IKKE afprøvet det, men i stedet for at sende værdien "Ja" så sender du tekst-strengen "s_1" til funktionen...

Altså kalder du funktionen med:
  .GetProfileString("test.ini", "test", "s_1", "", Is_error)
hvor jeg mener det skulle være:
  .GetProfileString("test.ini", "test", "Ja", "", Is_error)
hvor "Ja" er indsat fra variablen s_1...

ALTSÅ:
"s_1" er en tekstreng med værdien "s_1"
s_1 er en variabel (af typen tekst) med værdien "Ja"
Avatar billede dk_akj Nybegynder
07. februar 2002 - 09:16 #14
Det jeg skal lave er at printe nogle etiketter.
Data sendes til printeren serielt som én (1)  streng.

På etiketten skal der bla. stå et kundenavn en prodtype og en vægt
layoutet på etiketterne skal kunne ændres uden at lave om i programkoden.

eks:

s_cust = getcust() ' find kunde fra db
s_weight = getweight() ' hent vægt fra com2
s_prod = getprod()' hent produktnavn fra db

i inifilen skal der så stå
*x10y50#Kunde:& s_cust#*x10y100#Vægt: & s_weight#

min variabel (s_2) skal nu have værdien:
*x10y50#Kunde: KundeABC #*x10y100#Vægt: 200#


jeg kunne selv bruge nogle replace funktoner men det vil jeg helst være fri for.

koder:
* = ny komando
x10y50 = start position for print
# = ny text
# = afsl af text
Avatar billede proaccess Nybegynder
13. marts 2002 - 07:45 #15
Fik du løst dette, og kan vi få lukket spørgsmålet?
Avatar billede dk_akj Nybegynder
13. marts 2002 - 07:48 #16
Ikke løst, måtte bruge replace funktioner.
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