| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | IfThen igen Fra : ms1@skindbeni.dk | 
  Dato :  26-07-05 10:10 |  
  |  
 
            Hej.
 Jeg har tidligere fået hjælp herinde til samme problem, men det
 "irriterer" mig alligevel, at jeg ikke kan få det, som jeg vil...
 Det drejer sig om nogle komplicerede beregninger, som jeg skal
 foretage. Der er en del hvis'er i mine beregninger. I Excel kunne jeg
 fx have skrevet det som flg.
 HVIS(G8="Gift";
 E6+HVIS(E7>0;E7;0)-HVIS(E8>E71;E8-E71;0)+
 HVIS(G7<0;HVIS(E7+G7>=0;G7;-E7);0))*E11);0)
 Men i Delphi kan jeg ikke få det på lignende måde.
 If sætninger kan ikke sættes som fx
 a:= b + if b>0 then b else 0 + if c > 100 then c*2 else 100;
 Jeg har i oprindelig tråd fået foreslået at bruge ifthen
 Fx i simpel form a := IfThen(b>0; b+2; 2);
 Men denne funktion kan jeg ikke få til at virke som jeg vil heller.
 Er der ingen måde hvorpå jeg nemt kan lave ovenstående excel
 eksempel i Delphi fremfor at skulle lave en hel masse if sætninger,
 der hurtigt kan ende med at blive til en masse kode, hvis alle
 beregninger skal skrives hver gang en ny if sætning skal prøves.
 I Excel kan jeg jo sige
 Hvis "udtryk"; udføres hvis sandt; udføres hvis falsk
 hvilket er optimalt, da det kan indgå inde midt i en beregning.
 Hmm... er i forvirret?    Det er jeg næsten ved at forklare det nu
            
              |   |   
            
        
 
            
         
           Finn Bindeballe (26-07-2005) 
         
	
            | Kommentar Fra : Finn Bindeballe | 
  Dato :  26-07-05 11:03 |  
  |  
 
            hej....
 nu kan jeg ikke lige huske hvilken ver. delphi du bruger, men IfThen 
 virker altsaa fint i delphi 7.....
 mht dei andet forslag/problem, saa er der ikke mulighed for den slags i 
 pascal. meeeen det maa være til at komme over....
 /Finn
 ms1@skindbeni.dk wrote:
 > Hej.
 > 
 > Jeg har tidligere fået hjælp herinde til samme problem, men det
 > "irriterer" mig alligevel, at jeg ikke kan få det, som jeg vil...
 > 
 > Det drejer sig om nogle komplicerede beregninger, som jeg skal
 > foretage. Der er en del hvis'er i mine beregninger. I Excel kunne jeg
 > fx have skrevet det som flg.
 > 
 > HVIS(G8="Gift";
 > E6+HVIS(E7>0;E7;0)-HVIS(E8>E71;E8-E71;0)+
 > HVIS(G7<0;HVIS(E7+G7>=0;G7;-E7);0))*E11);0)
 > 
 > Men i Delphi kan jeg ikke få det på lignende måde.
 > 
 > If sætninger kan ikke sættes som fx
 > 
 > a:= b + if b>0 then b else 0 + if c > 100 then c*2 else 100;
 > 
 > Jeg har i oprindelig tråd fået foreslået at bruge ifthen
 > 
 > Fx i simpel form a := IfThen(b>0; b+2; 2);
 > 
 > Men denne funktion kan jeg ikke få til at virke som jeg vil heller.
 > 
 > Er der ingen måde hvorpå jeg nemt kan lave ovenstående excel
 > eksempel i Delphi fremfor at skulle lave en hel masse if sætninger,
 > der hurtigt kan ende med at blive til en masse kode, hvis alle
 > beregninger skal skrives hver gang en ny if sætning skal prøves.
 > 
 > I Excel kan jeg jo sige
 > 
 > Hvis "udtryk"; udføres hvis sandt; udføres hvis falsk
 > 
 > hvilket er optimalt, da det kan indgå inde midt i en beregning.
 > 
 > Hmm... er i forvirret?    Det er jeg næsten ved at forklare det nu
 > 
            
              |   |   
            
        
 
            
         
           ms1@skindbeni.dk (26-07-2005) 
         
	
            | Kommentar Fra : ms1@skindbeni.dk | 
  Dato :  26-07-05 12:00 |  
  |  
 
            Finn Bindeballe skrev:
 > hej....
 >
 > nu kan jeg ikke lige huske hvilken ver. delphi du bruger, men IfThen
 > virker altsaa fint i delphi 7.....
 Jeg bruger ver 6,0 PE indtil videre. Formentligt bruger jeg den forkert
 så.    (det er der også stor sandsynlighed for)
 > mht dei andet forslag/problem, saa er der ikke mulighed for den slags i
 > pascal. meeeen det maa være til at komme over....
 Okay. Har du et forslag til at opstille følgende beregning, som jeg
 her giver i tekstform.
 Resultat, A, B, C, D, E.
 Resultat = A + (hvis B er positiv så B ellers 0) + (hvis C < D så C
 ellers D) + (hvis D < 0 så D ellers 0).
 Umiddelbart vil jeg mene, at der vil komme uoverskueligt og riiiiigtig
 mange sætninger (vist nok 16) og megen skriveri af det samme i Delphi,
 da den ikke kan finde ud af den anden måde. Det bliver jo det samme
 procedurer/beregninger kun med en enkelt forskel hver gang.
 medmindre du (i andre erfarne) kender en genial opstilling
            
              |   |   
            
        
 
            
         
           Michael Haase (26-07-2005) 
         
	
            | Kommentar Fra : Michael Haase | 
  Dato :  26-07-05 14:58 |  
  |   
            ms1@skindbeni.dk skrev:
 
 > 
 > Okay. Har du et forslag til at opstille følgende beregning, som jeg
 > her giver i tekstform.
 > 
 > 
 > Resultat, A, B, C, D, E.
 > 
 > Resultat = A + (hvis B er positiv så B ellers 0) + (hvis C < D så C
 > ellers D) + (hvis D < 0 så D ellers 0).
 > 
 > Umiddelbart vil jeg mene, at der vil komme uoverskueligt og riiiiigtig
 > mange sætninger (vist nok 16) og megen skriveri af det samme i Delphi,
 > da den ikke kan finde ud af den anden måde. Det bliver jo det samme
 > procedurer/beregninger kun med en enkelt forskel hver gang.
 > 
 > medmindre du (i andre erfarne) kender en genial opstilling
 > 
 
 Umiddelbart vil jeg mene at nedenstående giver det du efterlyser
 
 resultat:=a + fx(b>0)*(-b) + fx(c<d)*(-c) + fx(c>=d)*(-d) + fx(d<0)*(-d);
 
 hvor fx(b>0) = strtoint(booltostr(b>0)) osv
 
 hvis en sammenligning er sand, returnerer den -1, derfor skal der ganges 
 med minus igen. Hvis falsk returnerer den 0.
 
 -- 
 Michael Haase
  
            
             |   |   
            
        
 
            
         
           pb (26-07-2005) 
         
	
            | Kommentar Fra : pb | 
  Dato :  26-07-05 15:32 |  
  |  
 
            ms1@skindbeni.dk wrote:
 > Finn Bindeballe skrev:
 > 
 >>hej....
 >>
 >>nu kan jeg ikke lige huske hvilken ver. delphi du bruger, men IfThen
 >>virker altsaa fint i delphi 7.....
 > 
 > 
 > Jeg bruger ver 6,0 PE indtil videre. Formentligt bruger jeg den forkert
 > så.    (det er der også stor sandsynlighed for)
 > 
 > 
 >>mht dei andet forslag/problem, saa er der ikke mulighed for den slags i
 >>pascal. meeeen det maa være til at komme over....
 > 
 > 
 > Okay. Har du et forslag til at opstille følgende beregning, som jeg
 > her giver i tekstform.
 > 
 > 
 > Resultat, A, B, C, D, E.
 > 
 > Resultat = A + (hvis B er positiv så B ellers 0) + (hvis C < D så C
 > ellers D) + (hvis D < 0 så D ellers 0).
 > 
 > Umiddelbart vil jeg mene, at der vil komme uoverskueligt og riiiiigtig
 > mange sætninger (vist nok 16) og megen skriveri af det samme i Delphi,
 > da den ikke kan finde ud af den anden måde. Det bliver jo det samme
 > procedurer/beregninger kun med en enkelt forskel hver gang.
 > 
 > medmindre du (i andre erfarne) kender en genial opstilling
 > 
 16? Det var mange. Burde det her ikke give det rigtige resultat:
 Resultat := A;
 if B > 0 then
    Resultat := Resultat + B;
 if C < D then
    Resultat := Resultat + C
 else
    Resultat := Resultat + D;
 if D < 0 then
    Resultat := Resultat + D;
 16 sætninger er der i hvert fald ikke    Håber det hjælper
 pb
            
              |   |   
            
        
 
            
         
            Skindbeni (26-07-2005) 
         
	
            | Kommentar Fra : Skindbeni | 
  Dato :  26-07-05 19:49 |  
  |  
 
            "pb" <pb@nospam.invalid> skrev i en meddelelse 
 news:42e6496f$0$716$edfadb0f@dread12.news.tele.dk...
 > ms1@skindbeni.dk wrote:
 >> Okay. Har du et forslag til at opstille følgende beregning, som jeg
 >> her giver i tekstform.
 >>
 >>
 >> Resultat, A, B, C, D, E.
 >>
 >> Resultat = A + (hvis B er positiv så B ellers 0) + (hvis C < D så C
 >> ellers D) + (hvis D < 0 så D ellers 0).
 >>
 >> Umiddelbart vil jeg mene, at der vil komme uoverskueligt og riiiiigtig
 >> mange sætninger (vist nok 16) og megen skriveri af det samme i Delphi,
 >> da den ikke kan finde ud af den anden måde. Det bliver jo det samme
 >> procedurer/beregninger kun med en enkelt forskel hver gang.
 >>
 >> medmindre du (i andre erfarne) kender en genial opstilling
 >>
 > 16? Det var mange. Burde det her ikke give det rigtige resultat:
 >
 > Resultat := A;
 > if B > 0 then
 >   Resultat := Resultat + B;
 > if C < D then
 >   Resultat := Resultat + C
 > else
 >   Resultat := Resultat + D;
 > if D < 0 then
 >   Resultat := Resultat + D;
 >
 > 16 sætninger er der i hvert fald ikke    Håber det hjælper
 Hej pb.
 Sådan havde jeg ikke overvejet opstillingen før nu. Tænkte slet ikke i den 
 retning (at det er muligt at bruge fx Resultat som mellemregning hele vejen 
 igennem).
 Super!
 Tak for det. 
            
              |   |   
            
        
 
            
         
             pb (26-07-2005) 
         
	
            | Kommentar Fra : pb | 
  Dato :  26-07-05 20:10 |  
  |  
 
            Skindbeni wrote:
 > "pb" <pb@nospam.invalid> skrev i en meddelelse 
 > news:42e6496f$0$716$edfadb0f@dread12.news.tele.dk...
 > 
 >>ms1@skindbeni.dk wrote:
 > 
 > 
 >>>Okay. Har du et forslag til at opstille følgende beregning, som jeg
 >>>her giver i tekstform.
 >>>
 >>>
 >>>Resultat, A, B, C, D, E.
 >>>
 >>>Resultat = A + (hvis B er positiv så B ellers 0) + (hvis C < D så C
 >>>ellers D) + (hvis D < 0 så D ellers 0).
 >>>
 >>>Umiddelbart vil jeg mene, at der vil komme uoverskueligt og riiiiigtig
 >>>mange sætninger (vist nok 16) og megen skriveri af det samme i Delphi,
 >>>da den ikke kan finde ud af den anden måde. Det bliver jo det samme
 >>>procedurer/beregninger kun med en enkelt forskel hver gang.
 >>>
 >>>medmindre du (i andre erfarne) kender en genial opstilling
 >>>
 >>
 >>16? Det var mange. Burde det her ikke give det rigtige resultat:
 >>
 >>Resultat := A;
 >>if B > 0 then
 >>  Resultat := Resultat + B;
 >>if C < D then
 >>  Resultat := Resultat + C
 >>else
 >>  Resultat := Resultat + D;
 >>if D < 0 then
 >>  Resultat := Resultat + D;
 >>
 >>16 sætninger er der i hvert fald ikke    Håber det hjælper
 > 
 > 
 > Hej pb.
 > 
 > Sådan havde jeg ikke overvejet opstillingen før nu. Tænkte slet ikke i den 
 > retning (at det er muligt at bruge fx Resultat som mellemregning hele vejen 
 > igennem).
 > 
 > Super!
 > 
 > Tak for det. 
 > 
 > 
 Det var så lidt.
 pb
            
              |   |   
            
        
 
            
         
           Haastrup (26-07-2005) 
         
	
            | Kommentar Fra : Haastrup | 
  Dato :  26-07-05 20:05 |  
  |  
 
            On 26 Jul 2005 04:00:17 -0700, ms1@skindbeni.dk wrote:
 >Finn Bindeballe skrev:
 >> hej....
 >>
 >> nu kan jeg ikke lige huske hvilken ver. delphi du bruger, men IfThen
 >> virker altsaa fint i delphi 7.....
 >
 >Jeg bruger ver 6,0 PE indtil videre. Formentligt bruger jeg den forkert
 >så.    (det er der også stor sandsynlighed for)
 >
 >> mht dei andet forslag/problem, saa er der ikke mulighed for den slags i
 >> pascal. meeeen det maa være til at komme over....
 >
 >Okay. Har du et forslag til at opstille følgende beregning, som jeg
 >her giver i tekstform.
 >
 >
 >Resultat, A, B, C, D, E.
 >
 >Resultat = A + (hvis B er positiv så B ellers 0) + (hvis C < D så C
 >ellers D) + (hvis D < 0 så D ellers 0).
 >
 >Umiddelbart vil jeg mene, at der vil komme uoverskueligt og riiiiigtig
 >mange sætninger (vist nok 16) og megen skriveri af det samme i Delphi,
 >da den ikke kan finde ud af den anden måde. Det bliver jo det samme
 >procedurer/beregninger kun med en enkelt forskel hver gang.
 >medmindre du (i andre erfarne) kender en genial opstilling
 Hvorfor laver du så ikke bare en procedure eller funktion?
 F.eks. ala (ikke testet):
 function ITE( test:boolean; res1,res2:real):real;
 begin
    if test then result:=res1 else result:=res2;
 end;
 ...
 resultat:=A+ITE( (B>0), B, 0)+ITE(  (C<D), C, D)+ITE(  (D<0), D, 0);
 Regards S. Haastrup.
            
              |   |   
            
        
 
            
         
           Erik Klausen (26-07-2005) 
         
	
            | Kommentar Fra : Erik Klausen | 
  Dato :  26-07-05 21:23 |  
  |   
            ms1@skindbeni.dk wrote in news:1122375617.138206.311730
 @g49g2000cwa.googlegroups.com:
 
 > Finn Bindeballe skrev:
 > Resultat = A + (hvis B er positiv så B ellers 0) + (hvis C < D så C
 > ellers D) + (hvis D < 0 så D ellers 0).
 
 Resultat := A+Max( B, 0 )+Min( C, D )+Min( D, 0 );
 
 mvh.
 Erik Klausen
  
            
             |   |   
            
        
 
            
         
            Skindbeni (27-07-2005) 
         
	
            | Kommentar Fra : Skindbeni | 
  Dato :  27-07-05 01:15 |  
  |   
            
 "Erik Klausen" <ekl@host.domain> skrev i en meddelelse 
 news:Xns969FE3B64DB5EErikKlausen@62.243.74.162...
 > ms1@skindbeni.dk wrote in news:1122375617.138206.311730
 > @g49g2000cwa.googlegroups.com:
 >
 >> Finn Bindeballe skrev:
 >> Resultat = A + (hvis B er positiv så B ellers 0) + (hvis C < D så C
 >> ellers D) + (hvis D < 0 så D ellers 0).
 >
 > Resultat := A+Max( B, 0 )+Min( C, D )+Min( D, 0 );
 
 Hvordan får jeg brugt Max og min?
 
 Jeg får fejlbeskeden Undeclared identifier når jeg forsøger at anvende 
 ovenstående.. 
 
 
  
            
             |   |   
            
        
 
            
         
             Haastrup (27-07-2005) 
         
	
            | Kommentar Fra : Haastrup | 
  Dato :  27-07-05 08:47 |  
  |   
            On Wed, 27 Jul 2005 02:15:06 +0200, "Skindbeni"
 <ms1@FJERNDETTEskindbeni.dk> wrote:
 
 >
 >"Erik Klausen" <ekl@host.domain> skrev i en meddelelse 
 >news:Xns969FE3B64DB5EErikKlausen@62.243.74.162...
 >> ms1@skindbeni.dk wrote in news:1122375617.138206.311730
 >> @g49g2000cwa.googlegroups.com:
 >>
 >>> Finn Bindeballe skrev:
 >>> Resultat = A + (hvis B er positiv så B ellers 0) + (hvis C < D så C
 >>> ellers D) + (hvis D < 0 så D ellers 0).
 >>
 >> Resultat := A+Max( B, 0 )+Min( C, D )+Min( D, 0 );
 >
 >Hvordan får jeg brugt Max og min?
 >
 >Jeg får fejlbeskeden Undeclared identifier når jeg forsøger at anvende 
 >ovenstående.. 
 >
 Er den ikke i en unit. f.eks
 
 uses math;
 ....
 vh
 Regards S. Haastrup.
  
            
             |   |   
            
        
 
            
         
              Erik Klausen (28-07-2005) 
         
	
            | Kommentar Fra : Erik Klausen | 
  Dato :  28-07-05 14:36 |  
  |   
            Haastrup <abc3@noplanet.com> wrote in 
 news:4meee11jfbltan0u7gqjt3eum6papu987l@4ax.com:
 
 > On Wed, 27 Jul 2005 02:15:06 +0200, "Skindbeni"
 > <ms1@FJERNDETTEskindbeni.dk> wrote:
 
 >>Hvordan får jeg brugt Max og min?
 >>
 >>Jeg får fejlbeskeden Undeclared identifier når jeg forsøger at anvende 
 >>ovenstående.. 
 >>
 > Er den ikke i en unit. f.eks
 > 
 > uses math;
 
 Jo, det er da rigtigt. Math skal tilføjes i USES-linien, der står øverst i 
 programmet. Derved kommer USES-statementet til at ligne dette:
 
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
   Forms, Dialogs, StdCtrls, Math;
 
 Jeg var ellers sikker på at Max og Min hørte til Standard Pascal, men der 
 kan man bare se.
 
 mvh.
 Erik Klausen
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |