+ Yanıtla
Toplam 8 sonuçtan 1 ile 8 arası olanlar

Konu Başlığı: Replace Sorunu

  1. #1

    Replace Sorunu

    Merhaba
    ExecuteGlobal txtoku(okunan) şeklinde txtden veri okuma fonksiyonum var.

    Ben replace yöntemiyle detay yazan yerlerde ExecuteGlobal txtoku(okunan) fonksiyonunu çalıştırmaya çalışıyorum.

    Replace(rs("detay"),"detay",ExecuteGlobal txtoku(okunan) ) şeklinde replace etmeye çalıştığımda

    Microsoft VBScript derleme hatası (0x800A03EE)
    ')' gerekli

    hatasını alıyorum.Bu sorunu nasıl çözebilirim?

  2. #2
    Replace(rs("detay"),"detay", ExecuteGlobal(txtoku(okunan)))

    şeklinde deneyin?
    "oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
    http://www.sipidik.com

  3. #3
    absconder(Hızır) teşekkürler dediğin şekilde problemi çözdüm Yalnız şu anda farklı bir problem yaşıyorum.

    function yer(komut)
    Dim isle,kod,i
    komut=replace(komut,"<%=","<%response.write ")
    komut=replace(komut,"<%","[+a+][ASP]")
    komut=replace(komut,"%"&">","[/ASP][+a+]")
    isle=split(komut,"[+a+]")
    kod=""
    for i=0 to ubound(isle)
    if left(isle(i),5)="[ASP]" then
    isle(i)=replace(isle(i),"[ASP]","")
    isle(i)=replace(isle(i),"[/ASP]","")
    kod=kod&isle(i)&vbcrlf
    else
    isle(i)=replace(isle(i),chr(34),chr(34)&chr(34))
    isle(i)=replace(isle(i),vbcrlf,"")
    isle(i)=replace(isle(i),chr(10),"")
    isle(i)=replace(isle(i),chr(13),"")
    kod=kod&"response.write "&chr(34)&isle(i)&chr(34)&vbcrlf
    end if
    next
    yer=kod
    set isle=nothing
    set kod=nothing
    set i=nothing
    end function


    Dim fso,oku,okunan
    Set fso = server.CreateObject("Scripting.filesystemobject")
    Set oku = fso.OpenTextFile(server.MapPath("txtdosyasi.txt"))
    okunan=oku.Readall

    Dim dene
    dene=ExecuteGlobal(yer(okunan))

    Bu şekilde tanımlama yaptıgımda ekrana direk olarak yazdırıyor. Ben ExecuteGlobal(yer(okunan)) fonksiyonunu dene değişkenine tanımlamak daha sonra replace içinde kullanmak istiyorum.Bunu nasıl yapabilirim?

  4. #4
    tahminim, ExecuteGlobal fonksiyonunuz return etmeyip direk response.write benzeri bir şeyle yazdırmakta olduğunuz.
    Kod:
    function ExecuteGlobal(val)
        ExecuteGlobal = val & " - " & val
    end function
    
    dim dene
    dene = ExecuteGlobal("özgür")
    
    yaparsanız dene değişkeninin değeri "özgür - özgür" olacaktır. bu değişkeni sonra istediğiniz yerde kullanabilirsiniz.

    tabi ExecuteGlobal fonksiyonunuzu yazarsanız daha net birşeyler söyleyebilirim.
    "oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
    http://www.sipidik.com

  5. #5
    Abs conder; kodlarım şu:


    function txtoku(komut)
    Dim isle,kod,i
    komut=replace(komut,"<%=","<%response.write ")
    komut=replace(komut,"<%","[+a+][ASP]")
    komut=replace(komut,"%"&">","[/ASP][+a+]")
    isle=split(komut,"[+a+]")
    kod=""
    for i=0 to ubound(isle)
    if left(isle(i),5)="[ASP]" then
    isle(i)=replace(isle(i),"[ASP]","")
    isle(i)=replace(isle(i),"[/ASP]","")
    kod=kod&isle(i)&vbcrlf
    else
    isle(i)=replace(isle(i),chr(34),chr(34)&chr(34))
    isle(i)=replace(isle(i),vbcrlf,"")
    isle(i)=replace(isle(i),chr(10),"")
    isle(i)=replace(isle(i),chr(13),"")
    kod=kod&chr(34)&isle(i)&chr(34)&vbcrlf
    end if
    next
    txtoku=kod
    set isle=nothing
    set kod=nothing
    set i=nothing
    end function



    Dim fso,oku,okunan
    Set fso = server.CreateObject("Scripting.filesystemobject")
    Set oku = fso.OpenTextFile(server.MapPath("txtdosyasi.txt"))
    okunan=oku.Readall
    Dim dene
    dene=txtoku(okunan)

    icerikler=Replace(icerikler,"detay",dene) kodu bu şekilde yazdırdığımda txtdosyasi.txt deki kodları HTML formatında yazdırıyor.Benim kodları ASP olarak çalıştırmam gerektiğinden icerikler=Replace(icerikler,"detay",ExecuteGlobal( dene)) şeklinde bir yapı kullanıyorum.ancak bu seferde "Deyim gerekli" hatasını veriyor.

  6. #6
    hmm, ben ExecuteGlobal'in internal bir fonksiyon olduğunu atlamışım

    o zaman, txtdosyasi.txt dosyasında yazılanlar önem kazanır. txt dosyada muhtemelen ASP kodlarınız ve response veren işlemler sozkonusu. dolayısı ile ExecuteGlobal ile verilen kod doğrudan çalıştığından geriye bir değer döndermiyor.

    txt dosyanızda neler yazıyor acaba? template uygulamaları benzeri bir uygulama mı yapıyorsunuz? txt dosyanızın yapısını değiştirmeniz mümkün mü?

    yapılmıyor diye bir şeyin olduğuna inanmıyorum ama yönteminizi gözden geçirmenizi önerebilirim.
    "oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
    http://www.sipidik.com

  7. #7
    Tahmin ettiğiniz gibi bir template yapı üzerinde çalışıyorum.Bende çözümü olmadığına inanmıyorum.Çünkü kodu;

    kod=kod&chr(34)&isle(i)&chr(34)&vbcrlf değilde kod=kod&"response.write "&chr(34)&isle(i)&chr(34)&vbcrlf

    şeklinde kullandığımda sonucu yazdırıyor, ancak bu seferde değişkene atayamıyorum ve yapımda bir döngü söz konusu olduğundan birden fazla sonuç yazıyor.Yani yapmam gereken asıl txtoku fonksiyonunun içeriğini bir değişkene atamak .

  8. #8
    response.write icerik yazdığımda HTML formatında kodları yazdırıyorum.

    Ancak Executeglobal icerik yazdığımda Deyim Gerekli hatası alıyorum ne yapmalıyım?

+ Yanıtla

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz