Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Uhrzeit



  • Please log in to reply
7 replies to this topic
grofol
  • Members
  • 7 posts
  • Last active: Aug 27 2015 04:51 AM
  • Joined: 23 Jan 2014

Hallo zusammen. Ich hab da ein kleines Problem. Ich finde den Fehler nicht, welcher ich gemacht habe.

Mein Ziel. Wenn vor 12 Uhr, dann das heutige Datum. Wenn nach 12 Uhr, dann das morgige, ausser am Freitag das von Montag.

 

mein Skript:

if 
(selection = "ABC")
{
Sleep, 
100
Send, 
ABC
if(A_Hour < "12")
{
FormatTime, var1, %var1%, ddMM
Send,%var1%
}
Else
{
If 
(A_DDD<>"Fr")
{
var1 
=
var1 += 1, 
days
FormatTime, var1, %var1%, ddMM

Send,%var1%
}
else
{
var1 
=
var1 += 3, 
days
FormatTime, var1, %var1%, ddMM 

Send,%var1%
}
}
Send, 
{TAB}{TAB}
}

Danke schon mal für eure Hilfe. Ich hoffe es ist echt nur irgend eine { oder } falsch und nicht zu kompliziert geschrieben.

 

Gruss

 

grofol



gregster
  • Members
  • 283 posts
  • Last active: Nov 09 2015 03:08 AM
  • Joined: 19 Mar 2009

Da ist aber formatierungstechnisch was falsch gelaufen. Könntest du den Code in deinem Post nochmal so reinkopieren, so wie du ihn auch in deinem Editor siehst?  

Woher kommt eigentlich das var1 im ersten Formattime-Befehl? Das fällt offenbar vom Himmel - ist das der komplette Code? Und wo kommt die Variable 'days' überhaupt her? Das wären jedenfalls schon mal Ansatzpunkte für dich... zum Testen wäre es jedenfalls gut, wenn du uns die entsprechenden Werte dieser Variablen dazuschreiben würdest.



grofol
  • Members
  • 7 posts
  • Last active: Aug 27 2015 04:51 AM
  • Joined: 23 Jan 2014

so sah der Code vorher aus - hat gut funktioniert. Jedes Mal morgen oder Montag genommen (je nach Tag)

hoffe eines der 3 ist ok: (das erste erst Code geschrieben danach auf Code geklickt, das zweite erst Code geklickt und diesen dann rein kopiert und das dritte dann als Quote)

If (selection = "ABC"){Sleep, 
100Send, ABCIf (A_DDD<> "FR"){var1 =var1 += 1, 
daysFormatTime, var1, %var1%, ddMMSend,%var1%}else{var1 
=var1 += 3, daysFormatTime, var1, %var1%, 
ddMMSend,*var1%}Send, {TAB}{TAB}}
If (selection = "ABC")
{
Sleep, 100
Send, ABC
If (A_DDD<> "FR")
{
var1 =
var1 += 1, days
FormatTime, var1, %var1%, ddMM
Send,%var1%
}
else
{
var1 =
var1 += 3, days
FormatTime, var1, %var1%, ddMM
Send,*var1%
}
Send, {TAB}{TAB}
}

 

If (selection = "ABC")
{
Sleep, 100
Send, ABC
If (A_DDD<> "FR")
{
var1 =
var1 += 1, days
FormatTime, var1, %var1%, ddMM
Send,%var1%
}
else
{
var1 =
var1 += 3, days
FormatTime, var1, %var1%, ddMM
Send,*var1%
}
Send, {TAB}{TAB}
}

 

bei mir siehts so aus - schreib das ganze im normalen notepad (ich weis schande über mich :-))

geht in der Firma, in welcher ich arbeite, am besten da praktisch alles gesperrt ist

 

jedenfalls...danach kommt bei mir else if (selection ="DEF") (einfach als Beispiel usw...)

 

var1 ist nur in diesem Bereich. Der ganze Code ist recht lang (ein Gui mit mehreren Auswahlmöglichkeiten).

 

plFOatevbu_t.gif

 

die zweitletzte Zeile kommt dann mit ABC|DEF|GHI... und zu jedem send ABC + Datum von morgen, ausser Freitag Datum von Montag. (gem Code oben). Mein Ziel wäre es jetzt einfach, dass vor 12 Uhr noch das heutige Datum geschrieben wird.

 

hoffe ich konnte das Ganze klar genug erklären. In meinem Kopf klingts meistens logisch obwohl es seeeehr verwirrend wäre :-)

 

Besten Dank

 

in Hochachtung

 

grofol



gregster
  • Members
  • 283 posts
  • Last active: Nov 09 2015 03:08 AM
  • Joined: 19 Mar 2009

Was genau funktioniert denn bei dir nicht?

 

Zu Testzwecken habe ich jetzt mal ein paar 'send's durch 'msgbox' ersetzt und die versch. Fälle mit versch. Variablenwerten durchgespielt:

selection := "ABC"
hour := 11     ; 13  A_hour
ddd := "fr"     ; mo    A_DDD

if (selection = "ABC")
{
   Sleep, 100
   ;Send, ABC
   if(hour < "12")
   {
      msgbox "< 12"
      FormatTime, var1, %var1%, ddMM
      msgbox %var1%         ;Send,%var1%                    ergibt 0105
   }
   Else
   {
      If (DDD<>"Fr")
      {
         msgbox "kein fr,  > 12"
         var1 =
         var1 += 1, days
         FormatTime, var1, %var1%, ddMM
         msgbox %var1%                 ;     Send,%var1%        ergibt 0205
      }
      else
      {
          msgbox "fr,  > 12"
         var1=
         var1 += 3, days
         FormatTime, var1, %var1%, ddMM 
         msgbox %var1%              ; Send,%var1%               ergibt 0405
      }
   }
   ;Send, {TAB}{TAB}
}

Wenn ich dich richtig verstehe, dann müssten die drei Fälle, die du beschreibst, doch funktionieren, oder?



grofol
  • Members
  • 7 posts
  • Last active: Aug 27 2015 04:51 AM
  • Joined: 23 Jan 2014

du sprichst mir aus der Seele - müsste :)

 

habs mal gekürzt um nur diese Funktion zu testen und bisschen mit der Zeit gespielt (Send beibehalten, da es in einem Mail die Zeit rein schreibt... dürfte aber keinen Unterschied machen)

  if(hour < "14")
   {
      FormatTime, var1, %var1%, ddMM
      Send,%var1%   
   }
   Else
   {
      If (DDD<>"Fr")
      {
         var1 =
         var1 += 1, days
         FormatTime, var1, %var1%, ddMM
         Send,%var1%  
      }
      else
      {
         var1=
         var1 += 3, days
         FormatTime, var1, %var1%, ddMM
         Send,%var1%
      }
   }

egal ob ich 14 oder 16 oder 17 eingebe kommt der 0105. Bei 16 bzw 17 natürlich korrekt. Bei 14 müsste aber dann 0405 stehen.

 

wenn ich das kleiner als Zeichen in ein grösser als Zeichen ändere kommt der 0205 (was auch nicht sein dürfte da Samstag).

 

wie du richtig sagst... eigentlich müsste... aber es will nicht :-)



gregster
  • Members
  • 283 posts
  • Last active: Nov 09 2015 03:08 AM
  • Joined: 19 Mar 2009
✓  Best Answer

Nein, da hast du mich falsch verstanden. Ich wollte damit sagen, dass mMn der Code genau das macht, was du haben willst.

 

 

Mein Ziel. Wenn vor 12 Uhr, dann das heutige Datum. Wenn nach 12 Uhr, dann das morgige, ausser am Freitag das von Montag.

Wähle ich hier hour :=11, egal an welchem Tag, dann befinden wir uns vor der Grenze von 14 Uhr -> also heutiges Datum: 0105

 

Befinden wir uns dagegen nach der Stundengrenze, also z. B. hour:= 15 und DDD := "Fr" (also Freitag), bekomme ich das Datum von Montag: 0405

Also genau das, was Du willst?!? Denn du schriebst:

 

 

Mein Ziel. Wenn vor 12 Uhr, dann das heutige Datum. Wenn nach 12 Uhr, dann das morgige, ausser am Freitag das von Montag.

 

 

 

Bei 15 Uhr und Montag-Donnerstag willst du jedoch das Datum des nächsten Tages:    Wähle ich also bspw. DDD := "mo" (Montag) und hour := 15, erhalte ich das Datum des nächsten Tages, heute also 0205. Somit:

 

Mein Ziel. Wenn vor 12 Uhr, dann das heutige Datum. Wenn nach 12 Uhr, dann das morgige, ausser am Freitag das von Montag.

 

Dagegen ist das hier:

 

egal ob ich 14 oder 16 oder 17 eingebe kommt der 0105

definitv nicht der Fall mit diesem Code, den du zuletzt gepostet hast. Bei ddd := "fr" und hour := 16 kommt bei diesem Code definitiv 0405 und nicht 0105. Keine Ahnung wie du darauf kommst. Stell diese beiden Zuweisungen doch mal dem Code voraus! Was passiert denn, wenn du meinen Code verwendest?

 

Edit: Bist du dir sicher, dass Du die Variablen ddd und hour gesetzt hast? Ich denke nämlich: nein! Dann haben die bei dir natürlich den Wert 0 bzw. sind leer. Klar, dass dann immer 0105 (weil 0 < 14 < 16 < 17) kommt. Dir ist wahrscheinlich nicht aufgefallen, dass ich "ddd" und "hour" statt "A_ddd" und "A_hour" verwende und diese explizit zum Testen setze (um auch andere Wochentage testen zu können)?!? Ich nehme an, du hast stattdessen die Ziffer 12 ersetzt, richtig?

hour := 15    ; 13        A_Hour
ddd := "fr"  ;"fr"    mo


if(hour < "14")
   {
      FormatTime, var1, %var1%, ddMM
      Send,%var1%   
   }
   Else
   {
      If (DDD<>"Fr")
      {
         var1 =
         var1 += 1, days
         FormatTime, var1, %var1%, ddMM
         Send,%var1%  
      }
      else
      {
         var1=
         var1 += 3, days
         FormatTime, var1, %var1%, ddMM
         Send,%var1%
      }
   }

ergibt 0405. Dagegen ergibt

hour := 11    ; 13        A_Hour
ddd := "fr"  ;"fr"    mo


if(hour < "14")
   {
      FormatTime, var1, %var1%, ddMM
      Send,%var1%   
   }
   Else
   {
      If (DDD<>"Fr")
      {
         var1 =
         var1 += 1, days
         FormatTime, var1, %var1%, ddMM
         Send,%var1%  
      }
      else
      {
         var1=
         var1 += 3, days
         FormatTime, var1, %var1%, ddMM
         Send,%var1%
      }
   }

0105. Sind wir uns da einig?

 

analog:

hour := 15    ; 13        A_Hour
ddd := "mo"  ;"fr"    mo


if(hour < "14")
   {
      FormatTime, var1, %var1%, ddMM
      Send,%var1%   
   }
   Else
   {
      If (DDD<>"Fr")
      {
         var1 =
         var1 += 1, days
         FormatTime, var1, %var1%, ddMM
         Send,%var1%  
      }
      else
      {
         var1=
         var1 += 3, days
         FormatTime, var1, %var1%, ddMM
         Send,%var1%
      }
   }

ergibt 0205!



grofol
  • Members
  • 7 posts
  • Last active: Aug 27 2015 04:51 AM
  • Joined: 23 Jan 2014

Hallo zusammen

 

ich weis es ist schon alt - und auch schon länger durch. Aber habe mein Problem noch gelöst und merkte... mist bin ich blöd :D

 

Grundsätzlich war deine Formel super - hätte auch gut geklappt wenn ich, wie du sagtest, das ganze oben definiert hätte.

Jedoch wollte ich das nicht - ich wollte, dass es dies automatisch macht. Und da wars ja auch schon dabei... das A

also eig nur A_ vor hour und DDD und schon hätte es geklappt :)

 

Danke jedenfalls auch nachträglich nochmals für die Hilfe und alles.

 

 



grofol
  • Members
  • 7 posts
  • Last active: Aug 27 2015 04:51 AM
  • Joined: 23 Jan 2014
   if(A_hour < "12")
   {
      FormatTime, var1, %var1%, dd.MM
      Send, %var1%   
   }
   Else
   {
      If (A_DDD<>"Fr")
      {
         var1 =
         var1 += 1, days
         FormatTime, var1, %var1%, dd.MM
         Send, %var1%
      }
      else
      {
         var1=
         var1 += 3, days
         FormatTime, var1, %var1%, dd.MM 
         Send, %var1% 
      }
   }