1 Son düzenleyen, aydinufuk (16.02.2009 11:56:52)

Konu: VFP9 ve F#?

Merhaba,

Bu soru özellikle çetine tabi.  f# de bir fonksiyon yazıp bunu vFP9 çağırıp kullanmak mümkün mü?
Mümkünse ise , anlaşılması kolay basit bir örnek var mı?

Selamlar

2

Re: VFP9 ve F#?

etechnologia diye bir firmanın .net extender diye bir ürünü var. sanırım ancak onunla olur.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

3 Son düzenleyen, cetinbasoz (16.02.2009 19:19:10)

Re: VFP9 ve F#?

FSharpCOM.fs icerigi:

C#
#light

open System.Runtime.InteropServices
[<ProgId("cbFSharp.Demo")>]
[<ComVisible(true)>]
type Calculator() =
    let fibs =
        Seq.unfold
            (fun (n0, n1) ->
                Some(n0, (n1, n0 + n1)))
            (1,1)
 
    member x.firstN (x:int) =
        Seq.take x fibs |> Seq.to_array


Bundan COM yapan adimlar (VS DOS prompta cik):

C:\temp>md FSharpCOM

C:\temp>cd FSharpCOM

C:\temp\FSharpCOM>notepad FSharpCOM.fs

C:\temp\FSharpCOM>sn -k cetin.snk

Microsoft (R) .NET Framework Strong Name Utility  Version 3.5.30729.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Key pair written to cetin.snk

C:\temp\FSharpCOM>"C:\Program Files\FSharp-1.9.6.2\bin\fsc.exe" -a --keyfile
cetin.snk FSharpCOM.fs
Microsoft F# Compiler, (c) Microsoft Corporation, All Rights Reserved
F# Version 1.9.6.2, compiling for .NET Framework Version v2.0.50727

C:\temp\FSharpCOM>dir
 Volume in drive C is XPBoot
 Volume Serial Number is A8FA-725C

 Directory of C:\temp\FSharpCOM

02/16/2009  06:39 PM    <DIR>          .
02/16/2009  06:39 PM    <DIR>          ..
02/16/2009  06:38 PM               596 cetin.snk
02/16/2009  06:39 PM             5,632 FSharpCOM.dll
02/16/2009  06:38 PM               345 FSharpCOM.fs
               3 File(s)          6,573 bytes
               2 Dir(s)  64,522,588,160 bytes free

C:\temp\FSharpCOM>regasm FSharpCOM.dll /codebase
Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.3053
Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved.

Types registered successfully


(Byte sayisi ayni olmayacak, ilk denemede hatali bir yeri sonra duzelttim)

VS yoksa sn kullanmak icin keyfile olmadan da olur herhalde ama baska makineye transfer edemezsin diye biliyorum.

VFP test:

Visual Fox Pro
clear

o = Createobject('cbFSharp.Demo')
Local Array laFib[1]
laFib = o.FirstN(20)
For ix = 1 To 20
    ? laFib[m.ix]
Endfor

Not: Fib, Fibonacci icin kisaltma. Ilk N fibonacci'yi veriyor yani (dikkat et F#'da Seq limiti yok, en buyuk integeri versen bile o calisir da sonra array'e cevirim islemi oldugundan bu kod cakar-ornek diye oyle yazdim gectim).

4 Son düzenleyen, aydinufuk (17.02.2009 01:49:10)

Re: VFP9 ve F#?

cetin cok saol bu ornek benim işimi görür. denedin becerebildim. şimdi f# kodlarını yavaş yavaş geliştirirm ben. sanırım eğlenceli olacak. 
son bir soru bu dll i baska bir makinada kullanmak için hangi dosyaların trasfer edilmes geriyor ? ve hangi işlemin yapılması gerekiyor ?

5

Re: VFP9 ve F#?

Bildigim kadariyla sadece dll gidecek ve regasm ile kaydolacak. Ayni dizinde olursa regasm de gerekmeyebilir. snk gidiyor muydu hatirlamiyorum. Timucin daha iyi biliyor, o bircok makinede sbcole'yi kullandi.

6

Re: VFP9 ve F#?

Regasm sbcole.dll /codebase ile register ediyoruz. Snk uzantılı dosyayıda programın bulundugu yere koyuyoruz.

Buradan Çetin Üstada, sistemime yaptığı katkılarından dolayı tekrar teşekkür ediyorum.
O'nsuz fox çok yavanmış.

7 Son düzenleyen, aydinufuk (17.02.2009 13:07:44)

Re: VFP9 ve F#?

timuçin,

taşıdığım makinede bu işlemleri yapabilmem için kurulu olması gereken bir program  varmi? örneğin IIS gibi ? Yoksa her windows kurulu bilgisayarda çalışır mı? .NET hakkında pek bilgim yokta.

cetin,
son soru dedim ama atladiğim bişey var. f# runtime dll leri bir tane mi? başka bilgisayara hangi dll ler gitmesi gerekiyor?

teşekkürler şimdiden. çok makbule geçecek bu bilgiler.

8

Re: VFP9 ve F#?

iyi soru, onu atladim. C# olsa tum libraryer zaten windows service packler ile kullanicida var. F# olunca bir ihtimal sen F#'a ozel library kullanirsin PowerPack.dll gibi. O zaman sanirim o da gidecek ya da tumunu beraber paketleten bir kod vardi onu kullanirsin. Simdilik pas gec, isin bitip tasinacagi zaman dusunelim. Hatta sanirim VS'da deployment project yapabilirsin (bir kere yaptim daha cok kolay ve guzeldi ama detaylari hatirlamiyorum).
Timucin,
Bu arada sen de sagol sbcole'nin en iyi beta testeri sensin, hem de gercek ortamda:)