close

Visual FoxPro

Hopp til navigasjon Hopp til søk
Visual FoxPro
programmeringsspråk
Foxpro-icon.png
ForfatterMicrosoft
Opprinnelsesdato1984
Siste versjon9.0 av 16. oktober 2007
Paradigmerobjektorientert programmering og prosedyreprogrammering
Påvirket avFoxPro
Referanseimplementering
OperativsystemMicrosoft Windows
Nettstedmsdn.microsoft.com/vfoxpro

Visual FoxPro (VFP) er et programmeringsspråk som integrerer prosessuell og objektorientert programmering. Den er utgitt av Microsoft for Windows .

Historie

Språket stammer fra FoxPro som ble utviklet av Fox Technologies tidlig i 1984 . Den siste versjonen av FoxPro (2.6) var kompatibel med Mac OS , DOS , Windows og Unix operativsystemer . I 1992 ble Fox Technologies kjøpt opp av Microsoft. Navnet på språket har siden endret seg til Visual FoxPro. Den første versjonen av Visual FoxPro (3.0) støttet Mac- og Windows-operativsystemer. Den nåværende versjonen støtter kun Windows-operativsystemer

Den siste versjonen publisert av Microsoft er Visual FoxPro 9.0 fra 2004.

I mars 2007 kunngjorde Microsoft sin beslutning om å avbryte utviklingen av Visual FoxPro, slik at fellesskapet kan fortsette videre utvikling.

Microsoft ga likevel standard teknisk støtte frem til 2010 og utvidet støtte til 2015.

Funksjoner

Kodeeksempler

FoxPro-språket inneholder kommandoer som ligner på andre programmeringsspråk som Basic.

Noen eksempler på grunnleggende kommandoer:

FOR i = 1 til 10
     x = x + 6,5
 NESTE   && Du kan også bruke "ENDFOR" i stedet for "NESTE"

IF i = 25
     i = i + 1
 ELSE 
    i = i + 3
 ENDIF

x = 1
 DO Mens x <50
     x = x + 1
 ENDDO

x = 1
 GJØR MENS .T. 
    x = x + 1
     HVIS x <50
         SLØKKE 
    ELLERS 
        AVSLUTT 
    ENDIF 
ENDDO

nMåned = MÅNED ( DATO ())
 GJØR SAK
     - SAK nMåned <= 3
         MELDINGSBOKS ( "Q1" )

    CASE nMonth <= 6
         MESSAGEBOX ( "Q2" )

    CASE nMonth <= 9
         MELDINGSBOKS ( "Q3" )

    ELLERS 
        MELDINGSBOKS ( "Q4" )
 ENDCASE

FOR HVER eller kontroll I DENNE FORM .Kontroller MESSAGEBOX ( eller kontroll .navn )
 ENDFOR
    

f = Faktoriell (10)

FUNKSJON Faktoriell (n)
 LOKAL i, r

    r = 1
     FOR i = n TIL 1 TRINN -1
         r = r * i
     NESTE   && Også her kan du bruke "ENDFOR" i stedet for "NESTE" 
    RETURN r
 ENDFUNC

Hello World eksempler:

 * Skrive ut på gjeldende sted 
 ? "Hei Verden"

 * Skriv ut på et bestemt sted 
 @ 1.1 SEI "Hello World"

 * Skriv ut i et annet vindu 
 WAIT WINDOW "Hello World"

 * Skriv ut i standard dialogboks, kansellert på OK 
 MESSAGEBOX ( "Hello World" )

Objekter

* Skriv ut i et spesifikt vindu 
loForm = CREATEOBJECT ( "HiForm" )
 loForm .Show (1)

DEFINER KLASSE Hei Form AS Skjema 
    AutoCenter    = .T . 
    Bildetekst       = "Hei verden"

    LEGG TIL OBJEKT lblHi som etikett  ; 
        MED bildetekst = "Hei, verden!" 
ENDDEFINE
loMine = CREATEOBJECT ( "MyClass" )
? loMine.cProp1                && Fungerer dette (det doble og-tegnet indikerer en kommentar til slutten av linjen) 
? loMine.cProp2                && Feil: CPROP2-egenskapen er skjult eksternt.

? loMine.MyMethod1 ()           && Fungerer dette 
? loMine.MyMethod2 ()           && Feil: MYMETHOD2-egenskapen er skjult eksternt.

DEFINER KLASSE MyClass AS Custom 
    cProp1 = "Min eiendom"     && Dette er en offentlig eiendom 
    HIDDEN cProp2              && Dette er en privat eiendom (skjult) 
    dProp3 = {}                && En annen offentlig eiendom

    PROSEDYRE Init ()           && Klassekonstruktør 
        This .cProp2 = "Dette er en skjult egenskap."

    PROSEDYRE dProp3_Access    && The Getter identifiseres med taggen "_Access" i navnet 
        RETURN  DATE ()

    PROSEDYRE dProp3_As- tegn (vNewVal)      && Setteren identifiseres med taggen "_Assign" i navnet 
        IF  VARTYPE (vNewVal) = "D" 
            DENNE .dProp3 = vNewVal
         ENDIF

    PROSEDYRE MyMethod1 ()
     * Offentlig metode som kaller en skjult metode som returnerer 
    * verdien av en skjult egenskap. 
        RETUR  denne .MyMethod2 ()

    SKJULT PROSEDYRE MyMethod2 ()   && Dette er en privat (skjult) metode 
        RETURN  Denne .cProp2
 ENDDEFINE
  • VFP har et omfattende bibliotek med forhåndsdefinerte klasser og visuelle objekter som er tilgjengelige i IDE fra et egenskapsark (inkludert Methods ), [1] slik at det er nødvendig å skrive fullstendig kode som definerer en klasse og dens objekter kun i svært spesielle tilfeller og skriverammeverk for store systemer.

Databehandling

Språket tilbyr en stor gruppe kommandoer dedikert til å manipulere en database. Kommandoindeksen i VFP9 tilgjengelig fra "Hjelp"-menyen inneholder hundrevis og hundrevis av kommandoer og funksjoner. Eksemplene nedenfor viser hvordan du skriver kode for å lage og indeksere tabeller, men VFP har visuelle tabell- og databaseopprettingsskjermer som lager alt uten å måtte skrive kode.

 * Lag en tabell 
 LAG TABELL randData (iData I)

 * Fyll inn med tilfeldige data ved å bruke xBase- og SQL-kommandoer DML 
 FOR i = 1 TIL 50
      TILLEGG BLANK
      ERSTATT iData MED ( RAND () * 100)

     INSERT INTO randData (iData) VERDIER ( RAND () * 100)
  ENDFOR

 * Lag en indeks på dataene 
 INDEKS PÅ iData TAG iData
  LUKK DATA        && Lukker tabellen

 * Vis sorterte data ved å bruke xBase-stilkommandoer 
 BRUK randData
  SET ORDER TO iData
  LOCATE            && I stedet for GÅ TOPPE. Tving bruk av indekser for å finne TOPPLISTE  
  NESTE 10      && Topp 10  NEDER
  HOPPE -10
  LISTE HVILE &&         Siste 10 LUKK DATA
 
 

 * Velg sorterte data ved hjelp av SQL DML 
 SELECT -kommandoer * ; 
   FRA randData ; 
   BESTILLE ETTER iData SAMLING

ODBC-tilgang ved hjelp av SQL-passthrough

 PRIVATE cAuthorID, cAuthorName       && Private variabler som omdefinerer alle tidligere globale variabler private med samme navn 
 LOCAL nHnd, nResult                  && Lokale variabler er kun synlige i denne delen

 * Tilkobling til en ODBC-kilde 
 nHnd = SQLCONNECT ( "ODBCDSN" , "bruker" , "pwd" )

 * Uendelig sløyfe (utgangen tvinges inn i koden i tilfelle feil eller ved slutten av operasjonene) 
 GJØR MENS .T. 
     * Utfører en SQL-kommando 
     nResult = SQLEXEC (nHnd, "USE master" )
      IF nResult <0
          MESSAGEBOX ( "MASTER-databasen eksisterer ikke!" )
          AVSLUTT   && Avslutter 
     ENDIF -løkken

     * Henter dataene fra den eksterne serveren og plasserer dem i den lokale markøren 
     nResult = SQLEXEC (nHnd, "SELECT * FROM authors" , "QAUTHORS" )
      IF nResult <0
          MESSAGEBOX ( "Kan ikke utføre ekstern SQL SELECT-kommando!" )
          EXIT   && Går ut av 
     ENDIF

     * Oppdater en post i den eksterne tabellen ved å bruke en parametrisk spørring 
     cAuthorID      = "1001" 
     cAuthorName    = "Nytt navn" 
     nResult        = SQLEXEC (nHnd, "UPDATE forfattere SET auth_name =? CAuthorName WHERE auth_id =? CAuthorID" )
      IF nResult <0
          MESSAGEBOX ( "Kan ikke utføre ekstern SQL UPDATE-kommando!" )
          EXIT   && Avslutter 
     ENDIF -løkken

     * Hvis det når dette punktet, har vi gjort alle trinnene riktig 
     AVSLUTT   && Avslutt sløyfen ubetinget 
 ENDDO

 * Lukk SQLDISCONNECT-tilkoblingen 
 ( nHnd)

Merknader

  1. ^ Visual FoxPro Development Productivity Tools , på msdn.microsoft.com , Microsoft. Hentet 20. desember 2014 .

Bibliografi

Eksterne lenker