Zum Inhalt springen

computercrustie

Mitglieder
  • Gesamte Inhalte

    207
  • Benutzer seit

  • Letzter Besuch

Beiträge von computercrustie

  1. ..., aber momentan fukell ich daran, das mir bei der Passworteingabe Sternchen und nicht das Passwort angezeigt wird. .....

    Dann hast du dich sicherlich verschrieben.

    Wie gesagt, implementiere die Beispiele aus den Links die ich gepostet habe, da getchar() jeden Tastendruck zwar im STDIN stream ablegt, ihn aber auch gleichzeitig auf dem Bildschirm ausgibt.

    [EDIT]

    ICH habe mich verlesen, der Satz war nicht ganz eindeutig. Hätte auch sein können, dass du versuchst, anstatt der Sternchen das Passwort angezeigt zu bekommen.

    Sorry :floet:

    [/EDIT]

  2. So trivial ist das Problem leider nicht, deshalb wurde unter DOS auch getch() implementiert, da es im Gegensatz zum ANSI-C Befehl getchar() die Zeichen aus stdin nicht "echot", also auf dem Bildschirm ausgibt. Und genau das ist auch dein Problem. Du musst dir den getch()-Befehl UND den kbhit()-Befehl aus einem der Beispiele aus den obigen Links "nachbauen" und diesen dann benutzen.

    An dieser Stelle kann ich dir so nicht weiterhelfen, da ich nur Windows laufen habe und so diese Unix-spezifischen Dinge nicht nachvollziehen kann.

  3. Ich habe das jetzt mal ausprobiert und noch etwas ganz anderes festgestellt, das könnte aber Betriebssystem abhängig sein.

    Was passiert auf dem Bildschirm wenn du getchar() benutzt ? Erscheinen bei der Passworteingabe Sternchen ("*") oder die Buchstaben die du eingegeben hast ?

  4. dann schreiben wir die kbhit() halt selbst:

    
    int kbhit(void)
    
    {
    
      if(getchar()!=EOF)  //nächstes zeichen aus stdin holen und auf EOF prüfen
    
      {
    
         ungetc(stdin);  //Zeichen vorhanden, wieder zurückschreiben
    
         return 1;         //wahr zurückgeben
    
      }
    
      return 0;            //ansonsten falsch
    
    }
    
    

    Ich hab's nicht ausprobiert, müsste aber funktionieren

  5. Nimm als erstes mal wieder den <string.h> Header rein, damit strcpy und strcmp bekannt sind.

    Jetzt includiere bitte die <stdio.h> und ersetze getch() mit getchar() oder getc(stdin).

    Probier das bitte mal aus. Sollte es funktionieren, dann habe ich auch schon die Lösung für dein kbhit() Problem.

  6. Ich stehe mehr oder weniger vor folgendem Problem:

    für ein Handygame möchte ich Figuren über den Bildschirm laufen lassen, die sich immer am Boden bewegen, in Löcher fallen können oder auch kleine Steigungen überwinden können.

    Aufgrund der geringen Größe der Figuren reicht es hier, diese mit einem Rechteck zu definieren.

    Das Problem ist eher der Hintergrund.

    Meine momentane (gedankliche) Lösung sieht so aus, dass ich mir die Pixel, die unter dem Kollisionsrechteck der Figur liegen, in einen Buffer lege und jetzt den Unteren Rand des Kollisionsrechtecks sowie den in Bewegungsrichtung liegenden (also linken oder rechten) Rand mit dem Buffer vergleiche.

    Ist also zum Beispiel kein Pixel im Buffer am unteren Rand gesetzt, "fällt" die Figur ein Pixel nach unten.

    Sind am Rand in Bewegungsrichtung mehr als angenommen 3 Pixel gesetzt, kann die Figur hier nicht weiter, ansonsten wird sie die Anzahl der gesetzten Pixel nach oben und eins weiter in Bewegungsrichtung bewegt. (Das gleiche auch für eine Anzahl Pixel von oben, falls die Figur zu groß ist um hindurchzupassen).

    Das Problem hierbei ist die Performance, da sich mehr als eine Figur bewegen sollen und das ganze wie gesagt auf dem Handy unter J2ME laufen soll.

    Hat jemand eine bessere Lösung ?

    Danke schonmal im Voraus

  7. bmg4ever und Guybrush Threepwood haben ja schon alles gesagt, deshalb hier nur die Implementation des Passwortvergleichs:

    
      char pass_cmp[_MAXZEICHEN];   //variable für das vergleichspasswort deklarieren
    
      strcpy(pass_cmp,"passwort");  //"passwort" nach pass_cmp kopieren
    
    
      //...
    
      //hier den vorigen code bis ende der while-schleife einfügen
    
      //...
    
    
      std::cout<<std::endl<<"Das eingebene Passwort ist ";
    
    
      if ( 0 == strcmp(pass,pass_cmp) ) //pass mit pass_cmp vergleichen
    
        std::cout<<"richtig.";
    
      else
    
        std::cout<<"falsch.";
    
    
      std::cout<<std::endl;
    
    
      while(!_kbhit()); //warten bis taste gedrückt
    
    }
    
    
    In diesem einfachen Fall kannst du den String-Vergleich mittels strcmp auch so durchführen:
    
    if (strcmp(pass,"passwort") == 0)
    
     ...
    
    

    Da sparst du dir die Deklaration einer Passwortvariablen.

  8. 
    #include <stdio.h>
    
    #include <conio.h>
    
    
    //maximale Anzahl an Zeichen im Passwort
    
    #define _MAXZEICHEN 10
    
    
    void main(void)
    
    {
    
      char c = 0;
    
      char pass[_MAXZEICHEN];
    
      int cnt = 0;
    
    
      std::cout<<"Bitte geben Sie Ihr Passwort ein:";  
    
    
      while( 1==1 ) //endlosschleife
    
      {
    
        while(!_kbhit()); //warte bis taste gedrückt
    
        c = _getch();     //tastencode nach c auslesen
    
    
        if (c==13)        //wenn return gedrückt dann ende
    
          break;
    
    
        if (cnt<_MAXZEICHEN)
    
        {
    
          std::cout<<"*";   //Sternchen ausgeben  
    
    
          pass[cnt] = c;     //zeichen merken
    
          cnt++;             //zähler erhöhen
    
        }
    
      }
    
      pass[cnt] = 0;       //letztes element in pass[] auf \0 setzen
    
    
      std::cout<<std::endl<<pass<<std::endl;
    
    
      while(!_kbhit());
    
    }
    
    

    Das eingegebene Passwort steht am Ende in "pass" und kann dann verglichen werden.

  9. Das Problem habe ich soeben gelöst, indem ich die Wrapper-Klassen mit dem Klassenassistent von VC++6 (anstatt dem von VC++7) erstellt habe, dann da bekomme ich wie du bereits gesagt hast, einen LPDISPATCH Zeiger zurück und kann damit jetzt auf die Projekt-Struktur zurückgreifen.

    Aber jetzt habe ich das nächste Problem: Was muss ich implementieren, um die Events von MS-Project abzufangen ? Ich habe mich durch die MSDN gehangelt und versucht, die Beispiele die es dazu für Excel und Word gibt für MS-Project umzusetzen, allerdings scheitert es dort an der Eintragung meines Event-Objekts am Connection Point (Result(HRESULT) ist ungleich Null).

  10. Hallo !

    Ich arbeite momentan an einer Schnittstelle (via OLE) zu MS Project 2002 und bin auf folgendes Problem gestossen:

    Ich habe aus der .olb von MS-Project mit VC++ 7 Klassen generieren lassen, mit denen ich Project steuern möchte. Das starten und erzeugen eines neuen Files klappt wunderbar, nur bekomme beim Aufrufen der get_Project() Methode nicht das (von mir) erwartete Klassenobjekt zurück. Und zwar benötige erst einmal das Klassengerüst einer Klasse, die in der odl wie folgt definiert ist:

    
    [
    
      uuid(1019A320-508A-11CF-A49D-00AA00574C74),
    
      helpcontext(0x000200a9)
    
    ]
    
    coclass Project {
    
        [default] dispinterface _IProjectDoc;
    
        [default, source] dispinterface _EProjectDoc;
    
    };
    
    
    Die beiden Klassen _IProjectDoc und _EProjectDoc kann ich mit dem Klassenassistent erzeugen lassen, aber ich benötige die Klasse "Project", da diese wie oben erwähnt von der Methode get_Project() der Application zurückgegeben wird. Nun meine Frage: wie kann ich deren Klassendefinition erzeugen (sie wird nicht im Assistenten angezeigt) ? Die Application-Klasse ist in der .olb ähnlich definiert:
    
    [
    
      uuid(36D27C48-A1E8-11D3-BA55-00C04F72F325),
    
      helpcontext(0x0002008e)
    
    ]
    
    coclass Application {
    
        [default] dispinterface _MSProject;
    
        [source] dispinterface _EProjectApp;
    
        [default, source] dispinterface _EProjectApp2;
    
    };
    
    

    Hier habe ich einfach die generierte Klasse _MSProject in "Application" umbenannt und es funktioniert (zumindest kann ich MS Project starten und File öffnen etc.) nur eben hilft das Umbenennen der Klasse aus Abs. 1 von "_IProjectDoc" in "Project" nichts (es lässt sich zwar kompilieren, aber zur Laufzeit bekomme ich Ausnahmefehler beim OleDispatcher).

    Weiss jemand von euch weiter ?

    PS: im Internet finde ich nichts zu diesem Problem (oder mir fehlen die richtigen Suchbegriffe)

  11. Der Unix-Timestamp stellt die Sekunden dar, die seit dem 01.01.1970 0:00 vergangen sind.

    Dass bedeutet, dass du nur ausrechnen brauchst, wieviel Sekunden deine gewünschte Zeitdifferenz hat und ziehst diese zum Vergleich von dem aktuellen Datum ab.

    Beispiel:


    <?PHP
    $diff = 17280; //zwei tage in sekunden 60*60*24*2
    $res = mysql_query(
    "SELECT MAX(postdate) FROM tabelname WHERE id='1'"
    );
    if($res)
    {
    while(list($date)=mysql_fetch_row($res))
    {
    $color = (time()-$diff>$date) ? 'red' : 'black';
    echo "<font color=\"$color\">";
    echo date("d.m.Y H:i",$date)." Uhr";
    echo "</font>";
    }
    mysql_free_result($res);
    }
    ?>
    [/PHP]

    Die andere Variante wäre, MySql das für dich erledigen zu lassen:

    [PHP]
    <?
    $sql = "
    SELECT
    DATE_FORMAT (
    FROM_UNIXTIME(
    MAX(postdate)
    ),
    "%d.%m.%Y %H:%i"
    )
    AS datum,

    CASE
    WHEN
    UNIX_TIMESTAMP() - 17280 > FROM_UNIXTIME( MAX(postdate) )
    THEN
    'red'
    ELSE
    'black'
    END
    AS color
    FROM
    tabelname
    WHERE
    id = '1'
    ";

    if ($res = mysql_query($sql))
    {
    while(list($datum,$color)=mysql_fetch_row($res))
    {
    echo "<font color=\"$color\">$datum Uhr</font>\n";
    }
    mysql_free_result($res);
    }


  12. Das hängt von der Größe deiner Textdatei ab. Je größer diese ist, desto ressourcenfressender ist natürlich auch das Einlesen in ein Array und das Halten im Speicher (daraus resultierend).

    Sollte diese Datei zu groß sein, um sie jedesmal komplett einzulesen und nach der Verarbeitung wieder zu speichern, dann solltest du sie eventuell mit Datensatznummern versehen (hattest du schon, wenn ich mich richtig erinnere) und diese seperat speichern. Also eine Datei, die die Datensatznummer und die zugehörige Position in der Datendatei enthält und die Datendatei an sich. Dann hältst du nur noch die Datensatznummern mit den Positionen im Speicher und der Rest wird auf Anforderung aus der Datendatei geholt.

  13. Das Argument Arbeit lass ich net gelten :)

    Das macht jeder gute Texteditor per Search & Edit (vi rulez ;) ).

    Aber wo du das mit der Variable erwähnst. Im CSS Standard wäre es schön folgendes machen zu können:

    font {

    font-style: bold

    font-color: #ffffff

    }

    font_header {

    $font;

    ...

    }

    Wenn der Server, von dem das Style abgerufen werden soll, einen serverseitiges Scriptinterpreter laufen hat, dann kann man das mit dieser realisieren. Nur lädt man dann nicht direkt ein StyleSheet sondern eben die Ausgabe des Scripts.

    Ist zwar nur eine Notlösung, funktioniert aber auch ganz gut.

  14. Ah !

    Also mit Mozilla das gleiche Sympton (Scrollen mit Rad ohne Balken), bei IE Balken aber kein Scrollen.

    Ich habs!

    Du hast im unteren Bereich eine nicht abgeschlossene Tabelle mit der Höhenangabe 100% - mach da mal 10px draus (nur zum testen)....

    (und schliesse vor allem die Tabelle korrekt ab)

    [EDIT]

    Noch etwas : width und nicht witdh...

    Ich habe den Sourcecode deiner Seite genommen, nicht den geposteten.

    [/EDIT]

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...