1 Son düzenleyen, unsafeguard (28.03.2008 23:23:48)

Konu: bu kod hardiskin seri numarasını aldıktan sonra ne

Visual Fox Pro
**

FUNCTION bin2hex
LPARAMETERS CBIN
PRIVATE NBINLEN, NZEROLEN, CHEXVALUE, NLOOPX, CBIT, CHEX
NBINLEN = LEN(CBIN)
NZEROLAG = ROUND((NBINLEN/4)+0.49 , 0)*4-NBINLEN
CBIN = REPLICATE("0", NZEROLAG)+CBIN
CHEXVALUE = ""
FOR NLOOPX = 1 TO LEN(CBIN) STEP 4
CBIT = SUBSTR(CBIN, NLOOPX, 4)
DO CASE
CASE CBIT="0000"
CHEX = "0"
CASE CBIT="0001"
CHEX = "1"
CASE CBIT="0010"
CHEX = "2"
CASE CBIT="0011"
CHEX = "3"
CASE CBIT="0100"
CHEX = "4"
CASE CBIT="0101"
CHEX = "5"
CASE CBIT="0110"
CHEX = "6"
CASE CBIT="0111"
CHEX = "7"
CASE CBIT="1000"
CHEX = "8"
CASE CBIT="1001"
CHEX = "9"
CASE CBIT="1010"
CHEX = "A"
CASE CBIT="1011"
CHEX = "B"
CASE CBIT="1100"
CHEX = "C"
CASE CBIT="1101"
CHEX = "D"
CASE CBIT="1110"
CHEX = "E"
CASE CBIT="1111"
CHEX = "F"
ENDCASE
CHEXVALUE = CHEXVALUE+CHEX
ENDFOR
RETURN CHEXVALUE
ENDFUNC
**
FUNCTION dec2bin
LPARAMETERS NVALUE
PRIVATE NVALUE, CBINSTR, NREST
CBINSTR = ""
DO WHILE .T.
NREST = MOD(NVALUE, 2)
NVALUE = INT(NVALUE/2)
CBINSTR = STR(NREST, 1)+CBINSTR
IF NVALUE=0
EXIT
ENDIF
ENDDO
RETURN CBINSTR
ENDFUNC
**
FUNCTION serino
LOCAL I
LOCAL LNDRVTYPE
LOCAL LCDRIVE
LOCAL LNDRIVE
LOCAL LPROOTPATHNAME, LPVOLUMENAMEBUFFER, LPVOLUMESERIALNUMBER, LPMAXIMUMCOMPONENTLENGTH, LPFILESYSTEMFLAGS, LPFILESYSTEMNAMEBUFFER, NVOLUMENAMESIZE, NFILESYSTEMNAMESIZE
DECLARE INTEGER GetDriveType IN WIN32API STRING
DECLARE INTEGER GetLogicalDrives IN win32api
DECLARE SHORT GetVolumeInformation IN Win32API STRING, STRING, INTEGER, STRING, STRING, STRING, STRING, INTEGER
LNDRIVE = GETLOGICALDRIVES()
LCDRIVE = CHR(ASC("A")+2)+":\"
LPVOLUMENAMEBUFFER = "
"
LNDRIVETYPE = 2
STORE SPACE(255) TO LPROOTPATHNAME, LPVOLUMENAMEBUFFER, LPVOLUMESERIALNUMBER, LPMAXIMUMCOMPONENTLENGTH, LPFILESYSTEMFLAGS, LPFILESYSTEMNAMEBUFFER
STORE 255 TO NVOLUMENAMESIZE, NFILESYSTEMNAMESIZE
= GETVOLUMEINFORMATION(LCDRIVE, @LPVOLUMENAMEBUFFER, @NVOLUMENAMESIZE, @LPVOLUMESERIALNUMBER, @LPMAXIMUMCOMPONENTLENGTH, @LPFILESYSTEMFLAGS, @LPFILESYSTEMNAMEBUFFER, @NFILESYSTEMNAMESIZE)
LPVOLUMENAMEBUFFER = LEFT(LPVOLUMENAMEBUFFER, AT(CHR(0), LPVOLUMENAMEBUFFER)-1)
LNDRIVETYPE = GETDRIVETYPE(LCDRIVE)
CRETURNHEX = "
"
FOR Y = 1 TO LEN(ALLTRIM(LPVOLUMESERIALNUMBER))
CSTRENG = SUBSTR(LPVOLUMESERIALNUMBER, Y, 1)
CBIN = THIS.DEC2BIN(ASC(CSTRENG))
CHEX = THIS.BIN2HEX(CBIN)
IF LEN(CHEX)=1
CHEX = "
0"+CHEX
ENDIF
CRETURNHEX = CHEX+CRETURNHEX
ENDFOR
RETURN CRETURNHEX
ENDFUNC
**
FUNCTION hex2dec
LPARAMETERS INSTR
PRIVATE ALL LIKE j*
INSTR = ALLTRIM(INSTR)
JLEN = LEN(INSTR)
NSUM = 0
RPTR = 0
FOR NCTR = 1 TO JLEN
CPTR = UPPER(SUBSTR(INSTR, JLEN-RPTR, 1))
DO CASE
CASE CPTR='A'
CPTR = '10'
CASE CPTR='B'
CPTR = '11'
CASE CPTR='C'
CPTR = '12'
CASE CPTR='D'
CPTR = '13'
CASE CPTR='E'
CPTR = '14'
CASE CPTR='F'
CPTR = '15'
ENDCASE
NSUM = NSUM+(VAL(CPTR)*16**(NCTR-1))
RPTR = RPTR+1
ENDFOR
RETURN NSUM
ENDFUNC
**
FUNCTION findhex
LPARAMETERS INVAL
PRIVATE ALL LIKE j*
DO CASE
CASE INVAL=10
JOUTSTR = 'A'
CASE INVAL=11
JOUTSTR = 'B'
CASE INVAL=12
JOUTSTR = 'C'
CASE INVAL=13
JOUTSTR = 'D'
CASE INVAL=14
JOUTSTR = 'E'
CASE INVAL=15
JOUTSTR = 'F'
OTHERWISE
JOUTSTR = STR(INVAL, 1, 0)
ENDCASE
RETURN (JOUTSTR)
ENDFUNC
**
FUNCTION dec2hex
LPARAMETERS INNUM
OUTSTR = SPACE(0)
DO WHILE INNUM>0
OUTSTR = THIS.FINDHEX(MOD(INNUM, 16))+OUTSTR
INNUM = INT(INNUM/16)
ENDDO
RETURN (OUTSTR)
ENDFUNC
**
<EOF>



FUNCTION serino
bi bakarmısınız bu kod hardiskin seri numarasını aldıktan sonra ne yapıyor veyada nasıl kullanırım bunu.fox pro bilmiyorumda.bir butona atayıp text box ta yazdıramazmıyım.

2

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

Kızma ama bu kod harddisk seri no için değil ve oldukça amator bir kod. Cok kolay bozulur. Onun seri no dediği harddiske formatlandıgında yazılan seri nosu. O cok rahat değiştirilebilen ve DOS penceresinde "dir" deiğinde gorduğun numara.

3

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

Ya fox tan anlamadığım için sordum aynısını delphi ile yazacamda yardımcı olursanız.tabiki.

4

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

http://www.fox4um.com/viewtopic.php?id=621 linki sana yardımcı olacaktır..kolay gelsin

En büyük sermaye nakit,nakit sermaye vakittir...

5 Son düzenleyen, unsafeguard (29.03.2008 12:17:44)

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

bu fonksiyonun dönüşü sadece hdd nin volume informationumu.başka işlem yok yani.bu fonksiyonu kullanan bir fox programı derleyip verebilirmisiniz bana.
kodu yazan adam değişken tipleri belirtmemiş.fox ta değişken tipleri variant mı.yani tip belirtmeyince variant olarak mı alıyo.
bana örnek bir program derlerseniz sevinirim.

6

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

Kizacagini biliyordum:) Onu Delphi'ye cevireceksen basitlestirilmis hali:

Visual Fox Pro
Declare SHORT GetVolumeInformation In Win32API;

  STRING @lpRootPathName, String @lpVolumeNameBuffer,;
  INTEGER nVolumeNameSize, Integer @lpVolumeSerialNumber,;
  INTEGER @lpMaximumComponentLength, Integer @lpFileSystemFlags,;
  STRING @lpFileSystemNameBuffer, Integer nFileSystemNameSize
Store 0 To lncomplen, lnsysflags, lnserialno
Store Space(260) To lcvolname, lcsysname
Store Len(m.lcvolname) To lnvolsize, lnnamesize
 
lcRoot = 'c:\'
 
If (GetVolumeInformation(m.lcRoot, @lcvolname,;
    lnvolsize, @lnserialno, @lncomplen, @lnsysflags,;
    @lcsysname, lnnamesize) # 0)
  ?  Stuff(Substr(Transform(m.lnserialno,'@0'),3),5,0,'-')
Endif

lcRoot = 'c:\' ile C surucunde istwedigimizi belirtiyoruz. Function yapacaksan o parametre.
-SerialNo integer olarak geliyor: m.lnserialno
-Transform(m.lnserialno,'@0') ile deger Hex'e ceviriliyor (senin verdigin kod muhtemelen 1992'lerde yazilmis, onun icin kendi cevirim kodunu biraz kotu bir sekilde yazmis).
-Substr(Transform(m.lnserialno,'@0'),3) ile Hex'e cevirilen degerin 3. karakterden itibaren olan kismi aliniyor (ilk ikisi daima Hex oldugunu belirten "0x")
-Stuff(Substr(Transform(m.lnserialno,'@0'),3),5,0,'-') ile de 5 ve 6. karakterler arasina tire koyarak aynen DOS dir'deki gibi goruntulenmesi saglaniyor.

? ile de sonucu yaziyor. Function yazacaksan o return degeri.

Simdi WMI destegi destegi olan sistemlerde daha basit olan:

Visual Fox Pro
** Author: Cetin Basoz

loWBEMLocator = Createobject("wbemScripting.SwbemLocator")
loWMIService = loWBEMLocator.ConnectServer('', '\root\cimv2')
 
If !Isnull(loWMIService)
  loLogicalDrives = loWMIService.ExecQuery('Select * from Win32_LogicalDisk')
  ? 'Logical disk'
  For Each loLogicalDrive In loLogicalDrives
    ? loLogicalDrive.Description, ;
      loLogicalDrive.DeviceID, ;
      loLogicalDrive.VolumeName, ;
      loLogicalDrive.VolumeSerialNumber
  ENDFOR
  ?
  ? 'Physical Disk'
  loPhyDrives = loWMIService.ExecQuery('Select * from Win32_PhysicalMedia')
  For Each loPhyDrive In loPhyDrives
    ? loPhyDrive.Tag,;
      loPhyDrive.SerialNumber
  Endfor
Endif

Ilki normal HDD seri no icin ikincisi "uretici seri nosu".

7 Son düzenleyen, cetinbasoz (29.03.2008 12:30:20)

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

unsafeguard yazdı:

bu fonksiyonun dönüşü sadece hdd nin volume informationumu.başka işlem yok yani.bu fonksiyonu kullanan bir fox programı derleyip verebilirmisiniz bana.
kodu yazan adam değişken tipleri belirtmemiş.fox ta değişken tipleri variant mı.yani tip belirtmeyince variant olarak mı alıyo.
bana örnek bir program derlerseniz sevinirim.


Foxpro strong typing kullanmiyor. Yeteri kadar akilli oldugundan atanan degerden tipi tespit ediyor:)
Compile sirasinda hatalari yakalamiyor tabii ama diger bircok dilin akine interaktif kod calistirma destegi oldugundan ihtiyac da olmuyor. Elestirilebilir tabii ama inan bana diger dillerde surekli tip yazmak beni bayiyor. Gerzek onun sadece string olabilecegini anlamiyor diyorum:) Olay cok basit aslinda. C# dusun:

int i;
i = 1;
string y;
y = "Ne gerek var"

Dogrudan foxtaki gibi:
i = 1
y = "Ne gerek var"

yazilsa olmaz mi. Tipler belli. Belli degil dersen, belli oldugunun ispati (C#):

Console.WriteLine( 1.MinValue(), "Ne Gerek var".ToUpper() );

Sonuc integer minimum degeri ve stringin uppercase hali. Tipleri anlamasa o tiplerin metodlarini nasil kullaniyor.

Kodu sec kopyele, foxproda bir kod penceresine koy, sag klikle, Execute selection sec ve sonuca bak.

Bu arada tiper variant degil ama variant gibi de dusunebilisin. Atandigi an tip belirleniyor. Bu mumkun:

x = 1 && su anda tip numerik, tum integer,float,real... bekleyen yerlerde kullanilabilir
x = "merhaba" && ayni degisken artik string ya da diger adiyla karakter - foxproda karakter degerler ASCII 0-255 barindirabilir. ASCIIZ degil.

8 Son düzenleyen, unsafeguard (29.03.2008 15:28:11)

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

bu dil bana çok yabancı geldi.verdiğiniz ilk kodu çalıştırdığımda ****-**** atıyo bu volume info formatı doğrusunuz ama infoyu göstermiyo.
bir butona basınca textboxa sonucu atamaya çalıştım beceremedim.ama kodun devamında böyle yapmış.yapan amacam.textboxlara verdiğim sayıyı bu hale getirmiş.karşılaştırmış.

carpanı ise
böyle oluşturuyor

Visual Fox Pro
DO WHILE CARPAN=0

CARPAN = VAL(RIGHT(STR(SECONDS()*1000), 2))
ENDDO


Visual Fox Pro
PROCEDURE Click

DIMENSION CSERI(4)
SDSERI = ""
CSERI(1) = THISFORM.DISKSERINO.HEX2DEC(UPPER(THISFORM.text1.VALUE))
CSERI(2) = THISFORM.DISKSERINO.HEX2DEC(UPPER(THISFORM.text2.VALUE))
CSERI(3) = THISFORM.DISKSERINO.HEX2DEC(UPPER(THISFORM.text3.VALUE))
CSERI(4) = THISFORM.DISKSERINO.HEX2DEC(UPPER(THISFORM.text4.VALUE))
FOR A = 1 TO 4
CSERI(A) = IIF(MOD(CSERI(A), CARPAN)=0, CSERI(A)/CARPAN, (CSERI(A)/CARPAN)+MOD(CSERI(A), CARPAN))
SDSERI = SDSERI+PADL(THISFORM.DISKSERINO.DEC2HEX(VAL(ALLTRIM(STR(CSERI(A))))), 2, '0')
ENDFOR
IF DISKSERI=SDSERI
LOCAL LHKEY, LNDISPOSITION, LNRESULT
STORE 0 TO LHKEY, LNDISPOSITION
DECLARE INTEGER RegCreateKeyEx IN Win32API INTEGER, STRING @, INTEGER, STRING, INTEGER, INTEGER, INTEGER, INTEGER @, INTEGER @
DECLARE INTEGER RegSetValueEx IN Win32API INTEGER, STRING, INTEGER, INTEGER, STRING, INTEGER
DECLARE INTEGER RegCloseKey IN Win32API INTEGER
LNRESULT = REGCREATEKEYEX(-2147483647, 'Software\Veli', 0, "", 0, 06, 0, @LHKEY, @LNDISPOSITION)
IF LNRESULT=0
DO CASE
CASE THISFORM.LT.VALUE=1
TIPSIFRE = "A"
CASE THISFORM.LT.VALUE=2
TIPSIFRE = "T"
ENDCASE
YAZSIFRE = STRCONV(UPPER(THISFORM.Text1.VALUE), 13)+"#"+STRCONV(UPPER(THISFORM.Text2.VALUE), 13)+"#"+STRCONV(UPPER(THISFORM.Text3.VALUE), 13)+"#"+STRCONV(UPPER(THISFORM.Text4.VALUE), 13)+"#"+STRCONV("M"+TIPSIFRE+PADL(ALLTRIM(STR(CARPAN)), 2, '0'), 13)
LNRESULT = REGSETVALUEEX(M.LHKEY, "Veli", 0, 1, YAZSIFRE+CHR(0), LEN(YAZSIFRE))
IF LNRESULT=0
MESSAGEBOX("Ok.!", 64, "Mesaj")
THISFORM.RELEASE
ELSE
MESSAGEBOX("Olmadı.!", 16, "Mesaj")
THISFORM.Text1.SETFOCUS
ENDIF
ELSE
MESSAGEBOX("Olmadı.!", 16, "Mesaj")
THISFORM.Text1.SETFOCUS
ENDIF
= REGCLOSEKEY(M.LHKEY)
ELSE
MESSAGEBOX("Eşit değil.!", 16, "Mesaj")
THISFORM.Text1.SETFOCUS
ENDIF
ENDPROC



Visual Fox Pro
PROCEDURE al

DO CASE
CASE THISFORM.LT.VALUE=1
SSAYI = 270
CASE THISFORM.LT.VALUE=2
SSAYI = 280
ENDCASE
LOCAL DSERI1, DSERI2
SDSERI = ""
CARPAN = 0
DISKSERI = THISFORM.DISKSERINO.SERINO()
DSERI1 = VAL(ALLTRIM(STR(THISFORM.DISKSERINO.HEX2DEC(LEFT(DISKSERI, 2))))+ALLTRIM(STR(THISFORM.DISKSERINO.HEX2DEC(SUBSTR(DISKSERI, 3, 2)))))
DSERI2 = VAL(ALLTRIM(STR(THISFORM.DISKSERINO.HEX2DEC(SUBSTR(DISKSERI, 5, 2))))+ALLTRIM(STR(THISFORM.DISKSERINO.HEX2DEC(RIGHT(DISKSERI, 2)))))
DO WHILE CARPAN=0
CARPAN = VAL(RIGHT(STR(SECONDS()*1000), 2))
ENDDO
THISFORM.PLN1.VALUE = PADL(UPPER(THISFORM.DISKSERINO.BIN2HEX(THISFORM.DISKSERINO.DEC2BIN(CARPAN*SSAYI))), 4, '0')
THISFORM.PLN2.VALUE = PADL(THISFORM.DISKSERINO.DEC2HEX(DSERI1-CARPAN), 5, '0')
THISFORM.PLN3.VALUE = PADL(THISFORM.DISKSERINO.DEC2HEX(DSERI2-CARPAN), 5, '0')
THISFORM.PLN4.VALUE = PADL(THISFORM.DISKSERINO.DEC2HEX(VAL(ALLTRIM(STR(LEN(ALLTRIM(STR(THISFORM.DISKSERINO.HEX2DEC(LEFT(DISKSERI, 2)))))))+ALLTRIM(STR(LEN(ALLTRIM(STR(THISFORM.DISKSERINO.HEX2DEC(SUBSTR(DISKSERI, 3, 2)))))))+ALLTRIM(STR(LEN(ALLTRIM(STR(THISFORM.DISKSERINO.HEX2DEC(SUBSTR(DISKSERI, 5, 2)))))))+ALLTRIM(STR(LEN(ALLTRIM(STR(THISFORM.DISKSERINO.HEX2DEC(RIGHT(DISKSERI, 2))))))))-CARPAN), 4, '0')
THISFORM.PSN1.SETFOCUS
ENDPROC

Yukarıdaki kodda CARPAN = VAL(RIGHT(STR(SECONDS()*1000), 2)) böyle demiş bu bir zaman kavramının 1000 ile çarpımının sonucumu.
bide PADL(THISFORM.DISKSERINO.DEC2HEX(DSERI1-CARPAN), 5, '0') textbox atamalarında padl diye bir fonksiyon yada procedür kullanmış bu ne manaya geliyor.

9

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

unsafeguard dikkat et foxpro bağımlılık yapar sonra,(bu dil bana çok yabancı geldi dedin de).Bak sonra bırakamazsın benden söylemesi :-)

En büyük sermaye nakit,nakit sermaye vakittir...

10

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

unsafeguard yazdı:

bu dil bana çok yabancı geldi.verdiğiniz ilk kodu çalıştırdığımda ****-**** atıyo bu volume info formatı doğrusunuz ama infoyu göstermiyo.
bir butona basınca textboxa sonucu atamaya çalıştım beceremedim.ama kodun devamında böyle yapmış.yapan amacam.textboxlara verdiğim sayıyı bu hale getirmiş.karşılaştırmış.

carpanı ise
böyle oluşturuyor

Visual Fox Pro
DO WHILE CARPAN=0

CARPAN = VAL(RIGHT(STR(SECONDS()*1000), 2))
ENDDO

...
Yukarıdaki kodda CARPAN = VAL(RIGHT(STR(SECONDS()*1000), 2)) böyle demiş bu bir zaman kavramının 1000 ile çarpımının sonucumu.
bide PADL(THISFORM.DISKSERINO.DEC2HEX(DSERI1-CARPAN), 5, '0') textbox atamalarında padl diye bir fonksiyon yada procedür kullanmış bu ne manaya geliyor.


Ah ben nereden bileyim senin elinde 7.0'dan eski bir versiyon oldugunu sen soylemezsen:) ****.**** gormen normal. O zaman o numerik degeri sen Delphi'de hex'e cevirirsin (su anda fox versiyonunu vermek isterdim, ama sendeki versiyonu bilmeden kose kapmaca olacak).


VAL(RIGHT(STR(SECONDS()*1000), 2))

Ne yaptigi cok acik. Gece yarisindan beri gecen milisaniyenin son iki rakamini aliyor.

PADL(THISFORM.DISKSERINO.DEC2HEX(DSERI1-CARPAN), 5, '0')
padl(), padr() ... sadece foxproda olan fonksiyonlar degil, Delphi'de yok mu hayret. Delphi.Net'de var:)
PadL(Numerik, Boyut, Karakter)
Oradaki numerik degeri soluna 0 ekleyerek istenilen boyutta string donduruyor.

Mesela Padl(1, 3, '0') "001" verir.

11

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

bende ki sürüm 6.0 mış baktım.

Visual Fox Pro
PROCEDURE Click

DIMENSION CSERI(4)
SDSERI = ""
CSERI(1) = THISFORM.DISKSERINO.HEX2DEC(UPPER(THISFORM.text1.VALUE))
CSERI(2) = THISFORM.DISKSERINO.HEX2DEC(UPPER(THISFORM.text2.VALUE))
CSERI(3) = THISFORM.DISKSERINO.HEX2DEC(UPPER(THISFORM.text3.VALUE))
CSERI(4) = THISFORM.DISKSERINO.HEX2DEC(UPPER(THISFORM.text4.VALUE))
FOR A = 1 TO 4
CSERI(A) = IIF(MOD(CSERI(A), CARPAN)=0, CSERI(A)/CARPAN, (CSERI(A)/CARPAN)+MOD(CSERI(A), CARPAN))
SDSERI = SDSERI+PADL(THISFORM.DISKSERINO.DEC2HEX(VAL(ALLTRIM(STR(CSERI(A))))), 2, '0')
ENDFOR
IF DISKSERI=SDSERI

CSERI(1) = THISFORM.DISKSERINO.HEX2DEC(UPPER(THISFORM.text1.VALUE)) = tex1 deki veriyi hexden decimale çevir.CSERI(1) e aktar.

CSERI(A) = IIF(MOD(CSERI(A), CARPAN)=0, CSERI(A)/CARPAN, (CSERI(A)/CARPAN)+MOD(CSERI(A), CARPAN)) = açıklarmısınız.mod una bakıp kalan sıfır ise yordamımı işletiyor.

12

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

Delphide keygenmi yazıyorsun?

13 Son düzenleyen, unsafeguard (30.03.2008 15:23:15)

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

Yok fox proyu öğrenmeye çalışıyorum.;)Keygen Me:/

14

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

unsafeguard ,foxpro öğrenme merakı nereden geldi,merak ettim doğrusu :-)

En büyük sermaye nakit,nakit sermaye vakittir...

15

Re: bu kod hardiskin seri numarasını aldıktan sonra ne

unsafeguard yazdı:

CSERI(A) = IIF(MOD(CSERI(A), CARPAN)=0, CSERI(A)/CARPAN, (CSERI(A)/CARPAN)+MOD(CSERI(A), CARPAN)) = açıklarmısınız.mod una bakıp kalan sıfır ise yordamımı işletiyor.


MOD(CSERI(A), CARPAN)=0 ise CSERI(A)/CARPAN, degil ise (CSERI(A)/CARPAN)+MOD(CSERI(A), CARPAN)' i CSERI(A)' a koy (Mod modulus islemi).

Kod aptalca. Matematik bilmeyen biri yazmis gibi. Yaptigi kisaca:

CSERI(A) = (CSERI(A)/CARPAN)+MOD(CSERI(A), CARPAN)

Ayrica tehlikeli bir kod.

Ben bazen sadece VB,Delphi,C ornekleri olan DLLlerle calisiyorum, o zaman Delphi koduna bakiyorum iclerinde VFP'ye daha yakin olan diye:)