Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Assembler-Sekunden und Minuten aus Millisekunden berechnen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 11.11.2008, 15:58    Titel: Assembler-Sekunden und Minuten aus Millisekunden berechnen Antworten mit Zitat

Hallo! lächeln
Ich habe im Moment nicht die richtige Idee wie ich das anstellen könnte.
Es werden von mciSendString die Millisekunden zurückgegeben und ich habe 2 EDIT-Felder, eines für die Minuten und eines für die Sekunden. Nun steht bei über einer Minute beispielsweise 1 min 62 Sek. statt 1 min 2 Sek (eigentlich klar) ich müsste irgendwie mit dem Rest arbeiten aber fällt mir momentan nichts Gescheites ein.
Ich habe folgenden Code (C++, sei mir vergeben grinsen ):
Code:
void CMedienwiedergabe3Dlg::OnTimer(UINT_PTR nIDEvent)
{char spos[256];
   mciSendString("status MyAlias position", spos,255,0);
   DWORD dwPos=(DWORD)atoi(spos);
   DWORD sek; DWORD min; DWORD tausend=1000; DWORD sechzig=60;
   char sposmin[256]; char spossek[256];
   __asm{
      fild dwPos
        fidiv tausend
        fist sek
      mov eax, sek
      cmp eax, 60
      jb MSek
      fidiv sechzig
        fist min
      jmp Mmin
MSek: mov min, 0
Mmin: nop

   }
wsprintf(sposmin, "%i", min);
wsprintf(spossek, "%i", sek);
   ::SendMessage(editPosition.m_hWnd, WM_SETTEXT, NULL,(LPARAM)sposmin);
   ::SendMessage(EditSek.m_hWnd, WM_SETTEXT, NULL,(LPARAM)spossek);
 

Vielen Dank lächeln
_________________
...längre blomstre gamle nord...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 11.11.2008, 18:15    Titel: Antworten mit Zitat

In Inlineasm:
Code:
Dim As Integer min, sek, ms =62123
Asm
  mov eax, [ms]
  mov ecx, 1000
  mov ebx, 60
  Xor edx, edx
  idiv ecx
  Xor edx, edx
  idiv ebx
  mov [min], eax
  mov [sek], edx
End Asm

? ms
? min;":";sek
Sleep

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 11.11.2008, 18:26    Titel: Antworten mit Zitat

Super! Vielen vielen Dank. Ist ja bestens.
Habe noch ein kleines Problem, wenn sich jemand mit MFC auskennt: das Fenster wird nicht regelmässig aktualisiert... 4 Sekunden zählt die Zeit mit, dann bleibt sie stehen und der Balken für die Position auch. Sobald man aber im Fenster rumklickt läuft's wieder!
_________________
...längre blomstre gamle nord...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 11.11.2008, 21:07    Titel: Antworten mit Zitat

WM_TIMER
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 12.11.2008, 00:27    Titel: Antworten mit Zitat

Code:
void CMedienwiedergabe3Dlg::OnTimer(UINT_PTR nIDEvent)

Dies ist die Timer-Funktion; er wird 2 Mal pro Sekunde aufgerufen. Ich denke eher es ist ein Problem mit invalidate, welches aber eigentlich alleine aufgerufen werden sollte für ein Steuerelement.
Bei den MFC gibt es das mit UpdateData() welches ich nicht so ganz verstehe, darum habe ich hier auch den Weg mit ::SendMessage(...) gewählt.
_________________
...längre blomstre gamle nord...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz