Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Flera if satser

Postades av 2002-03-29 13:49:07 - Robin Åkerman, i forum visual basic - allmänt, Tråden har 10 Kommentarer och lästs av 923 personer

Om jag har 3 trevliga små variablar, vi kallar dom a,b och c
alla dessa måste vara<code> <> "" </code> för att gå vidare.
<code>
If a <> "" Then
If b <> "" Then
If c <> "" Then
If allok = True Then
frmMain.Show
Unload Me

else: msgbox("Something is wrong")
else: msgbox("Something is wrong")
else: msgbox("Something is wrong")
else: msgbox("Something is wrong")
End If
End If
End If
End If
</code>

Detta är antagligen fel och jag är nästan säker på att jag har kunnat det förr. men det var så länge sen jag proggade sist. tacksam för hjälp
kan tillägas att jag får felmedelandet "else without if"


Svara

Sv: Flera if satser

Postades av 2002-03-29 15:15:00 - Björn Johansson

gör så här istället:


If a <> "" Then
If b <> "" Then
If c <> "" Then
If allok = True Then
frmMain.Show
Unload Me

Else: MsgBox ("Something is wrong")
End If
Else: MsgBox ("Something is wrong")
End If
Else: MsgBox ("Something is wrong")
End If
Else: MsgBox ("Something is wrong")
End If

/bj


Svara

Sv: Flera if satser

Postades av 2002-03-29 15:29:31 - Sven Åke Persson

Hej på Er
Tycker att Ni skall försöka att uttrycka Er i Select Case mycket
bättre. Tex som jag ser ofta att Ni skriver If A = 10 And B = 12 Then

Fullständigt knäppt. Om inte A är 10 så behöver jag inte kolla And

Skriv istället
If A = 10 Then
If A = 12 Then
.... Gör något

krångla inte in Er i en massa IF Else satser det fixar sig med Select Case

mvh
Sven


Svara

Sv: Flera if satser

Postades av 2002-03-29 16:25:47 - Thomas Tydal

if a <> "" and b <> "" and c <> "" then
gå vidare
else
gå inte vidare
end if


Svara

Sv: Flera if satser

Postades av 2002-03-29 16:29:44 - Thomas Tydal

> Tex som jag ser ofta att Ni skriver If A = 10 And B = 12 Then
> Fullständigt knäppt. Om inte A är 10 så behöver jag inte kolla And

Det vet datorn också. Är inte a 10 så kollar den därför inte and.


Svara

Sv: Flera if satser

Postades av 2002-03-29 16:44:13 - Sven Åke Persson

Nix min vänn
Så är det inte om du deklarerar en And sats så är
processen skyldig att kolla om det finns ett And vilkor
att kolla. Nu får du ge dig du börjar bli dumdryg.

Som dom flesta oerfarna.

Sven


Svara

Sv: Flera if satser

Postades av 2002-03-29 19:05:03 - Niklas Jansson

>Nu får du ge dig du börjar bli dumdryg.

Väldigt orättvist mot Thomas, med tanke på att han enligt vad jag förstått är mycket intresserad av C. Där låter man nämligen kompilatorn vara smart (något VB inte kan beskyllas för).

I C/C++ kollas bara så långt som behövs. Detta är mycket användbart i flera tillfällen - t.ex. kan man i samma if-sats fråga om en pekare är ok, och sen om någonting om pekaren (detta kollas alltså bara om pekaren är ok)

/Niklas Jansson


Svara

Sv: Flera if satser

Postades av 2002-03-29 19:24:03 - Thomas Tydal

Det du skriver är sant för skriptspråk (VBScript) som är interpreterade. Där läser datorn en rad i taget och utför vad som står.

Men i kompilerade språk (dvs när man gör en exe-fil) så gör datorn om det du skrivet till maskinkod och i samband med det så optimeras det. Datorn plockar då bort onödiga uttryck och ändrar din kod så den går snabbare att köra.

Jag ber om ursäkt för att jag vet hur saker är, men anledningen till att jag vet beror på att jag inte nöjer mig med att lita på vad andra säger eller vad det står i böcker, utan jag testar själv också.

Jag har alltså testat att göra ett program med raderna:

if a = 12 and b = 12 then
a = 13
end if

respektive

if a = 12 then
if b = 12 then
a = 13
end if
end if

och de resulterade exefilerna blev exakt likadana. (Jag testade med programmet fc - File Compare.)

Kompilatorn gör om de två exemplen ovan till samma maskinkod, nämligen detta: (taget ur exe-filerna)

cmp dword[ebp-04], 0000000C
jne 00401229
cmp dword[ebp-08], 0000000C
jne 00401229
mov dword[ebp-04], 0000000D

(cmp = compare, jne = jump if not equal, mov = move)

Översätter vi det till lite pseudo-basic, så blir det så här:

if a <> 12 then
goto 00401229
end if
if b <> 12 then
goto 00401229
end if
a = 13

Och det är alltså den koden du får, oavsett om du skriver med and eller utan. Så av detta kan vi alltså se att även om man skriver if a = 12 and b = 12 så kollas inte ifall b är 12 om a inte är 12. Alltså, and-delen utförs bara om det första är sant.

Slutligen ska jag väl också tillägga att eftersom jag inte har någon vb-kompilator här så är exemplena ovan gjorda i en c-kompilator. Jag kan dock inte tänka mig att man skulle ha missat något så väsentligt i vb som att optimera koden, för i så fall är VB verkligen extremt skitdåligt. Men du får jättegärna testa!


Svara

Sv: Flera if satser

Postades av 2002-03-30 06:52:45 - Roland Ringhede

Ni som älskar att optimera kod bör tänka på att det är mycket sällan man har nytta av optimeringar som gör det enklare för datorna att hantera. Givetvis kan detta behövas vid vissa tunga beräkningar eller mycket ofta använda kodstycken men vad man oftast då glömmer är att en gång skriven kod kan behöva ändras samt vid genomgång för feltest kan den bli mycket svår att förstå.
Den kod man skriver måste kunna förstås av andra programerare om man inte har för avsikt att behålla den för sig själv. Om man optimerar bör man noga kommentera vad man gör (tänkte sig att det skulle hända)


Som förslag till en del av koden som här diskuterats så kan negativ testning medföra svårogheter att tolka för programerare och bör bytas till positiv testning


if a <> "" and b <> "" and c <> "" then
gå vidare
else
gå inte vidare
end if

Blir då enklare med

if a = "" or b = "" or c <> "" then
gå inte vidare
else
gå vidare
end if

Annars är som Sven föreslog Select Case ett bra alternativ, när det passar, för att få enkel kod att underhålla vid kommande förändringar.


/Roland


Svara

Sv: Flera if satser

Postades av 2002-03-30 10:15:07 - Sven Åke Persson

Hej igen
>för i så fall är VB verkligen extremt skitdåligt. Men du får jättegärna >testa!

Där har Vi nöten , fastän det kallas det för kompilering så
kör den så kallade exe filen fortfarande mot en tolk.
Exakt hur det är med And exemplet orkar jag inte kolla.
OBS det där med And har jag inte hittat på själv,läser
mycket expertartiklar om VB 6 , där har mina påstående
ventilerats,just detta om And var uppe för ett tag sedan.

Fortsatt Glad Påsk
mvh
Sven


Svara

Sv: Flera if satser

Postades av 2002-03-30 11:14:24 - Pontus Wång

Angående optimering i VB och villkor så kan jag bara säga att VB6 funkar så här:
Den kollar ALLTID ALLA AND-villkor först
Så fort ett AND-villkor INTE är uppfyllt hamnar man på ENDIF
Sen ger den sig på OR-villkoren
NOT används som negator och optimeras in vid kompilering av koden

Ledsen om jag "skriker" bitvis men det är så här VB fungerar...


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 645
27 953
271 710
603
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies