File

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Sans test "IF", non, je ne vois pas!

Chris :)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ben finalement, si: je vois!!! :lol:

Code : Tout sélectionner

;Voir l'aide pour ParseDate() et FormatDate() 

;/Dé-Commente une des parties ci-dessous, et commente l'autre

;- Partie 1 : Dans cette partie, HeureMaintenant > que HeureAvant
; HeureMaintenant = ParseDate("%hh:%ii:%ss","23:12:00") 
; HeureAvant = ParseDate("%hh:%ii:%ss","22:57:00")

;- Partie 2 : Dans cette partie, HeureAvant > que HeureMaintenant
HeureMaintenant = ParseDate("%hh:%ii:%ss","22:57:00") 
HeureAvant = ParseDate("%hh:%ii:%ss","23:12:00")

Difference.f = Int(Abs(HeureMaintenant - HeureAvant))

Diff$ = FormatDate("%hh:%ii:%ss",Difference) 
Debug Diff$
Tu mets une des deux parties en commentaire, et tu utilises l'autre.

Et y a pas de IF :lol:

Chris :)

PS: Le "INT" n'est pas indispensable: Ca métonnerait qu'on ait une valeur après la virgule, dans ce cas précis ;)
jblaise.cs
Messages : 30
Inscription : lun. 26/avr./2004 11:30
Localisation : V'dauban
Contact :

wowowo

Message par jblaise.cs »

Ca ce complique :p
lol

Hmm ya un chti probleme avec les jours :

Code : Tout sélectionner

D1$="10"
H1$="10"
M1$="00"
D2$="11"
H2$="12"
M2$="00"

HeureAvant = ParseDate("%dd:%hh:%ii",D1$+":"+H1$+":"+M1$)
HeureMaintenant = ParseDate("%dd:%hh:%ii",D2$+":"+H2$+":"+M2$) 
 
Difference = HeureMaintenant - HeureAvant 

Diff$ = FormatDate("%dd:%hh:%ii",Difference) 
Debug Diff$
Donne "02:02:00" au lieu de "01:02:00"
Dernière modification par jblaise.cs le lun. 26/avr./2004 15:11, modifié 1 fois.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Non, il n'y a rien de compliqué la dedans! ;)

Abs() te retourne une valeur positive, même si la valeur que tu lui donne est négative. Elle retire simplement le signe.

Par exemple, si valeur = -900, Abs(Valeur) te retournera 900.

Dans cet exemple, Différence est un nombre avec virgule (Float), parce que ABS() fonctionne mieux avec ce type de nombre.

Chris :)

Dans ton cas, il faut que tu donnes la date complète dans ParseDate(), parce que la fonction ne connait pas la date sur laquelle elle travaille. Tu ne lui donnes que le jour. Tu dois aussi lui donner le mois et l'année.

Ensuite, tu fais afficher les données qu tu veux voir dans FormatDate().

Bon... J'ai pas essayé, mais je suppose que c'est comme ça que ça fonctionne.
Chris :)
jblaise.cs
Messages : 30
Inscription : lun. 26/avr./2004 11:30
Localisation : V'dauban
Contact :

Message par jblaise.cs »

hmm
Est ce qu on peu afficher un nombre a virgule(*.f) dans une variable(*$)

Code : Tout sélectionner

A.f=150/60
Debug Str(A)
Debug A
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Oui, en utilisant StrF()

Code : Tout sélectionner

A.f=150/60 
Debug Str(A) 
Debug A

MaVariable$ = StrF(A)
Debug MaVariable$
Chris :)
jblaise.cs
Messages : 30
Inscription : lun. 26/avr./2004 11:30
Localisation : V'dauban
Contact :

Message par jblaise.cs »

J aurasi du regarder l aide avant... :oops:
dsl :(
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Voilà un bout de code qui permet de retrouver la différence entre deux dates:

Ce n'est certainement pas la seule solution, ni la meilleure, mais ça fonctionne: C'est le principal. :lol:

Code : Tout sélectionner

;- Pour que la fonction retrouve ses petits, tu dois lui fournir une date complète
;- sinon, elle se croit en 1970

D1$="10"      ;10/04/2004 10:00
M1$="04"
Y1$="2004"
H1$="10" 
Mn1$="00" 

D2$="11"      ;11/04/2004 12:00
M2$="04"
Y2$="2004"
H2$="12" 
Mn2$="00" 

;- Pour commencer, construit tes chaines à l'extérieur: C'est le plus simple
Date1$ = D1$+"/"+M1$+"/"+Y1$
Date2$ = D2$+"/"+M2$+"/"+Y2$

Heure1$ = H1$+":"+Mn1$
Heure2$ = H2$+":"+Mn2$

;- Calcule la différence de date indépendamment de celle de l'heure
DateAvant = ParseDate("%dd/%mm/%yyyy",Date1$)
DateMaintenant = ParseDate("%dd/%mm/%yyyy",Date2$)

;- La valeur retournée est en secondes : 1 Jour = 86400 secondes (60*60*24)
DiffDate = Abs(DateMaintenant-DateAvant)/86400 ; C'est la différence recherchée

;- Ensuite, calcul de la différence entre les heures
HeureAvant = ParseDate("%hh:%ii",Heure1$) 
HeureMaintenant = ParseDate("%hh:%ii",Heure2$)

Difference = Abs(HeureMaintenant - HeureAvant)

Diff$ = FormatDate("%hh:%ii",Difference)

;- Affichage du résultat 
Debug "Différence = "+Str(DiffDate)+" jour et "+Diff$+" heures"
Si quelqu'un à mieux à proposer, qui ne fasse pas 2000 lignes de code, je suis preneur :roll:

Chris :)
jblaise.cs
Messages : 30
Inscription : lun. 26/avr./2004 11:30
Localisation : V'dauban
Contact :

Message par jblaise.cs »

Cimer bcp
Jprefere en avoir un de 20 lignes qui marche plutot qu un plus court qui ne marceh pas :wink:

Hmm
dsl jai fai une 2/4 commande de mes logs dc demain si je block encore je reviendrais avec des kestions a deux balles
dsl :oops:
LavaLava
Messages : 173
Inscription : dim. 28/mars/2004 17:42
Localisation : Provence

Message par LavaLava »

@Cris
Euuuhh ... en fait je ne suis pas censé savoir qu'elle date est supérieure à l'autre !
J'esperais que tu ais vu un flag, ou une instruction style AbsDate, qui gére ça tout seul, d'ou l'inutilité du IF.
En tout cas merci.
jblaise.cs
Messages : 30
Inscription : lun. 26/avr./2004 11:30
Localisation : V'dauban
Contact :

Message par jblaise.cs »

hehe :D
J ai fini l interpretation des logs !! (sans vous :))

Code : Tout sélectionner

Structure Player
  PLAYER_ENTER_Day.s
  PLAYER_ENTER_Mon.s
  PLAYER_ENTER_Yea.s
  PLAYER_ENTER_Hou.s
  PLAYER_ENTER_Min.s
  PLAYER_LEAVE_Day.s
  PLAYER_LEAVE_Mon.s
  PLAYER_LEAVE_Yea.s
  PLAYER_LEAVE_Hou.s
  PLAYER_LEAVE_Min.s
  PLAYER_NAME.s
  PLAYER_FRAG.l
  PLAYER_DEATH.l
  PLAYER_CONN.l
  PLAYER_RANK.l
EndStructure
Dim Player.Player(99)
If ReadFile(0, "Log1.log")
  While Eof(0)=0
   ;thx to nico who have helped me for that
    First$ = Trim(ReadString())
;-killed
Position = FindString(First$, Chr(34)+" killed "+Chr(34), 1)
If Position <> 0
 Position2 = FindString(First$, "<", Position)
  If Position2 <> 0
   PLAYER_NAME$ = Mid(First$, Position+10, Position2-Position-10)
   Result = FindString(PLAYER_LIST$, PLAYER_NAME$, 1)
    If Result <> 0
     For k=0 To 99
      If Player(k)\PLAYER_NAME = PLAYER_NAME$
       Player(k)\PLAYER_DEATH = Player(k)\PLAYER_DEATH + 1
      EndIf
     Next
    Else
     PLAYER_LIST$=PLAYER_LIST$+"/"+PLAYER_NAME$
     PLAYER_NUMBER=PLAYER_NUMBER+1
     Player(PLAYER_NUMBER)\PLAYER_NAME = PLAYER_NAME$
     Player(PLAYER_NUMBER)\PLAYER_DEATH = Player(PLAYER_NUMBER)\PLAYER_DEATH + 1
    EndIf
  EndIf
EndIf
Position = FindString(First$, Chr(34)+" has been killed by "+Chr(34), 1)
If Position <> 0
 Position2 = FindString(First$, "<", Position)
  If Position2 <> 0
   PLAYER_NAME$ = Mid(First$, Position+22, Position2-Position-22)
   Result = FindString(PLAYER_LIST$, PLAYER_NAME$, 1)
    If Result <> 0
     For k=0 To 99
      If Player(k)\PLAYER_NAME = PLAYER_NAME$
       Player(k)\PLAYER_FRAG = Player(k)\PLAYER_FRAG + 1
      EndIf
     Next
    Else
     PLAYER_LIST$=PLAYER_LIST$+"/"+PLAYER_NAME$
     PLAYER_NUMBER=PLAYER_NUMBER+1
     Player(PLAYER_NUMBER)\PLAYER_NAME = PLAYER_NAME$
     Player(PLAYER_NUMBER)\PLAYER_FRAG = Player(PLAYER_NUMBER)\PLAYER_FRAG + 1
    EndIf
  EndIf
EndIf
Wend
  CloseFile(0)
 Debug "Number of player : "+Str(PLAYER_NUMBER)
 Debug "Players : "+PLAYER_LIST$
 Debug Player(1)\PLAYER_NAME
 Debug Player(1)\PLAYER_FRAG
 Debug Player(1)\PLAYER_DEATH
Else 
  MessageRequester("PureBasic", "Error: Can't read the file", 0) 
EndIf
Une structure et tout et tout... :) bon la j ataque la compilation en html.....:P ale ale jpar confiant la !
Répondre