Zum Inhalt springen

Bubble

Mitglieder
  • Gesamte Inhalte

    1.565
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Bubble

  1. Also, wenn ich die Aufgabenstellung richtig verstenden habe: Ein Kreis, Ursprung unbekannt, Radius r. Es sind zwei Punkte auf dem Kreis gegeben. Gesucht ist der Ursprung. Ich meine, das das Ergebnis bei nur zwei gegebenen Punkten fast immer nicht eindeutig ist, denn es gibt zwei Lösungen. Man kann sie ermitteln, indem man durch jedenn der beiden gegeben Punkte einen Kreis vom Radius r legt. Die beiden Schnittpunkte der Kreise sind mögliche Orte für den Ursprung. Im Sonderfall des Abstandes der Punkte gleich 2r gibt es nur einen Schnittpunkt, der der Ursprung ist. Wären drei Punkte auf dem Kreis gegeben, wäre der Ursprung des gesuchten Kreises der Punkt, in dem sich alle drei Kreise schneiden.
  2. Ohne Deinen Code jetzt im Detail gelesen zu haben: Der einfachste Weg dürfte es sein, die Hinweise auf zu aktualisierende Regionen zu ignorieren und immer das komplette Fenster neu zu zeichnen.
  3. Wie Klotzkopp schon sagte, der Fehler bezieht sich auf den Typ des Rückgabewertes beim Überschreiben virtueller Funktionen (müssen alle den gleichen Rückgabe-Typ haben, wenn die restlichen Parameter identisch sind). Allerdings: Was spricht eigentlich dagegen den neueren VC++ Compiler zu verwenden? Der 6er ist ja nun wirklich schon seit ein paar Jahren abgelöst.
  4. Zum Nachschlagen ist das Buch natürlich Klasse, aber für einen völligen Neueinsteiger würde ich lieber ein knapperes Buch, das sich auf die wichtigsten Dinge beschränkt, leicht verständlich ist und einfach nachzuvollziehende Beispiele enthält, aussuchen.
  5. Das Entfernen von Dateien bei einer Deinstallation kannst Du verhindern, indem Du die Permanent Eigenschaft auf True setzt. Du kannst auch alternativ folgendes ausprobieren: Du installiertst eine Vorlage, die nie verändert und nur als Basis dient. Beim 1. Programmstart oder gleich nach der Installation schaust Du, ob es bereits eine Config-Datei gibt und verwendest diese. Fall es keine gibt, erzeugst Du aus Deiner Vorlage eine Neue. Die Config-Datei sollte nun bei einer eventuellen Deinstallation erhalten bleiben. Das Erzeugen der Datei während der Installation kannst Du z.B. mit einer Custom Action mit VS einstellen. Vielleicht hilft Dir das ja etwas weiter.
  6. Du kannst, wie mein Vorposter bereits sagte, auch bis zum Eintritt des Ereignisses warten lassen. Du könntest auch eine Schleife verwenden und jeweils so lange warten lassen, dass nur unwesentlich CPU Zeit verbraucht wird. In dieser Schleife könntest Du dann auch gleich eventuelle Dialoge aktualisieren. Evtl. solltest Du uns etwas genauer Beschreiben, was Du eigentlich erreichen willst, denn aus den Postings geht es nicht vollständig hervor. Vor der ID muss der Win32 API Funktion SetTimer noch ein HWND übergeben werden.
  7. Ich glaube SetTimer ist nicht das, was Du suchst. (BTW, SetTimer hat 4 Parameter.) Schau Dir mal WaitForSingleObject und die dazugehörigen Funktionen an, oder schau allgemeiner unter Synchronization Functions nach. Mit WaitForSingleObject kannst Du z.B. darauf warten, dass ein von Dir angelegtes Event-Objekt signalisiert wird.
  8. Damit man keinen Schrott erwischt, hab ich ja einen Buchladen vorgeschlagen Aber Du hast Recht, es gibt viele nicht so tolle Bücher. Manchmal sind es auch nur unterschiede im Schreibstiel, so dass sich ein Buch "flüssiger" als ein anderes liest. Da muss man die Bücher eben im Buchladen anlesen, um das herauszufinden. Meistens ist, vor allem für Einsteiger, auch weniger mehr. Will sagen: Nicht jedes Konstrukt muss erklärt werden, es reichen die gebräuchlichsten, so dass man nicht unnötig mit anfangs unwichtigem belastet wird.
  9. Geh am besten in einen Buchladen (Fachbuchhandlung) und schau Dir verschiedenen C++ Bücher an, bis Du eines gefunden hast, das Dir vom Stil her zusagt. Lohnt sich IMO.
  10. Das TSP gehört zur Klasse der NP-harten und NP-vollständigen Probleme. Es hat eine Komplexität von O(n!), deswegen wird die vollständige Lösung bei ausreichend vielen Städten sehr viel Zeit benötigen. Es gibt allerdings verschiedene Ansätze, mit denen man zwar nicht immer den besten (kürzesten) Weg findet, aber eine gute Nährung bei geringerem Aufwand erreicht. Einfach mal im Web suchen. Eine vollständige Lösung durch Probieren aller Permutationen macht nur bei wenigen Städten Sinn. Wenn man den Startpunkt beliebig wählt, kann man die Zahl der zu prüfenden Verbindungen reduzieren, die Komplexität des Problems an sich sinkt damit aber leichter nicht.
  11. Bist Du sicher, dass Du den richtigen Handle vom Control hast? Kannst Du testweise mit Spy++ den Inhalt des Edit-Controls auslesen? Wie rufst Du SendMessage auf?
  12. Button drücken: Du sendest nur die Nachricht, die das Anwählen eines Buttons ausgelöst hätte. Mit dem Button selbst (und seinem Fenster) brauchst Du dich nicht zu befassen. Textboxen: Die Standart-Windows-Textboxen sind Fenster der System-Fensterklasse "Edit". Allerdings gibt es haufenweise Programme, die ihre eigene Klasse dafür festlegen oder die Textboxen gleich komplett selbst neu implementieren und zeichnen. Ausserdem gibt es ja noch die RichEdit-Textboxen. Wie versuchst Du auf den Text zuzugreifen? Mit GetDlgItemText?
  13. Vorab noch mal: Ich rate vom Vorgehen weiter ab, zumindest solltest Du Dir genau überlegen, was alles falsch laufen kann. Was wenn Du z.B. durch eine neue Version der zu steuernden Software versehentlich viele Daten löschst? Wenn es also irgendetwas Kritisches ist und die zu steuernde Software auch bei Euch entwickelt wird, würde ich lieber dort die notwendigen Schnittstellen nachrüsten. Aber nehmen wir einmal an, Du möchtest trotzdem weitermachen :-) Möglichkeit 1: Nachrichten versenden Wenn das zu steuernd Programm ein Windows-Programm ist, kannst Du versuchen Nachrichten über Ereignisse an die Message-Loop des jeweiligen Fensters zu senden. Stichwort: SendMessage. Sind mehrere Fenster im Spiel (Dialoge z.B.), musst Du die Nachrichten an das richtige Ziel schicken. Es kann sein, das diese Vorgehensweise nicht zum gewünschten Ziel führt, da Du nicht weißt, wie die Programme ihre Nachrichten verarbeiten (z.B. ob es für sie einen Unterschied macht, ob sie gerade den Fokus haben). Möglichkeit 2: Eingaben simulieren keybd_event oder (besser) SendInput fügen Tastatur und/oder Mauseingaben in die Eingabewarteschlange ein. Im Ergebnis sollte das also so sein, als ob ein Benutzer die Eingaben sehr schnell hintereinander selbst gemacht hat. Wenn Du das zum Steuern nutzt, musst Du unbedingt sicherstellen, das das richtige "Zielfenster" auch im Vordergrund und aktiv ist (SetForegroundWindow), sonst werden z.B. Tastatureingaben fehlgeleitet. Dazu rufst Du am besten kurz vorher die entsprechende Funktion auf, um das sicherzustellen. Und wenn der Vorgang etwas länger dauert, hoffen, das kein User an der Konsole dazwischenfunkt. Wenn Du selbst keine Win32 API Funktionen verwenden möchtest und bei .NET bleiben willst: SendKeys sollte laut Dokumentation in etwa das gleiche wie SendInput machen, aber nur für Tastatureingaben. Um die zu steuernde Anwendung in den Vordergrund zu bringen, könntest Du aus VB.NET die Funkrion AppActivate verwenden. Man müsste sie, wenn man den Namespace referenziert, aber auch von C# aus verwenden können. Es gibt dazu auch ein Beispiel im Zusammenhang mit Notepad. Ich hoffe, dass ich Dir geholfen habe.
  14. Bubble

    termzerlegung

    Wenn Du den Term ohnehin ausrechnen willst, musst Du wärend der Zerlegung doch ohnehin auf Korrektheit prüfen und kannst ggf. mit einem Fehler (z.B. unbekanntes Symbol, etc.) abbrechen.
  15. Vorab: Ich habe so etwas noch nie gemacht und halte es prinzipiell für eine schlechte Idee. Wenn es also keine "offizielle" Schnittstelle zum Fernsteuern gibt, würde ich es sein lassen. Letztlich läuft es darauf hinaus, das Du dem Programm Nachrichten unterschiebst. Allerdings kann es je nach GUI-Design mehr als einen Nachrichten-Handler geben, so dass das Auffinden des Hauptfensters nicht in jedem Fall reichen mag und Nachrichten per SendMessage den falschen Handler erreichen. Für WM_COMMAD musst Du auch die IDs kennen, die das zu steuernde Programm verwendet. Diese können sich auch von Version zu Version ändern. Ein Menü visuell aufklappen wirst Du hiermit aber nicht, nur die Aktion auslösen. Ein anderer Weg wäre es, das Fenster zu finden, in den Vordergrund zu bringen (SetForegroundWindow) und mit der API Funktion keyb_event künstlich Tastatureingaben zu erzeugen. Ob die Windows.Forms Methode SendKeys.Send in diesem Fall das gleichte tut, weiss ich leider nicht. Vielleicht helfen Dir die Ansätze ja etwas weiter.
  16. AFAIK kann man mit VS.NET 2003 keine Assemblies in .exe Dateien referenzieren, es kommt zu eríner Fehlermedlung. Du könntest die Klassen, die von zwei Projekten genutzt werden sollen, allerdings in eine Klassenbibliothek (DLL) auslagern, die dann von beiden Hauptprojekten eingebunden wird. Das Referenzieren weiterer exe Assemblies wird in der .NET SDK Doku des C# Compilers auch nicht empfohlen. Ich würde in diesem Fall immer den Weg über eine weitere DLL gehen.
  17. Der Lösungsweg ist ihm in der Aufgabe gegeben und auch so wie beschrieben umsetzbar, in einigen Hochsprachen leichter als in anderen. Etwas entzerrt ist der beschriebene Algorithmus jedoch IMO einfacher umsetzbar. In dieser Richtung wollte ich helfen. Ich möchte keineswegs auf der Verwendung vom Bit-Shift herumreiten. Ich wollte damit lediglich eine Verbindung zur Hardware herstellen. Der Bit-Shift Operator ist von der Basis unabhängig und auch auf die Dezimalzahlen 7,8,9 anwendbar. Es gibt zwar noch (unendlich viele) weitere Shift-Operatoren, hier ist immer die Bit-Shift Variante gemeint. Ich hoffe, der ursprüngliche Author wurde durch die Diskussion nicht zu sehr von der Aufgabe abgelenkt
  18. Hallo Jan, Die Geschichte kenne ich nicht, aber ich vermute die Aufgabe wurde gestellt, um zu zeigen, das man die Multiplikation zweier ganzer positiver Zahlen (x*y) mit geringerem Aufwand durchführen kann, als z.B. x einfach y-mal aufzuaddieren. Habe nie bestritten, das es ein Algorithmus ist und man das beschriebene Verfahren auch als solches bezeichnen sollte. Multiplikation als gegeben vorauszusetzen finde ich hier unsinnig. Es ist ja grade ein Algorithmus für die Multiplikation, der implementiert werden soll. Dann eher Verdopplung mittels Addition. Ich finde das Nette am Weg mit den Shifts ist grade, das man das Divisions-Problem so auch bequem lösen kann. Gut, man kann es als Kochrezept nehmen. Die Aufgabenstellung war aber auch schon recht detailiert. Es ist aber keine abgabefertige Lösung mit Sourcecode. Ich ging davon aus, das er etwas präzisere Hilfe möchte. Nicht wirklich. Pro geshiftetem Bit ist nur Verdoppelung/Division ohne Rest durch 2 möglich. Du verwechselt eine Darstellungsform (hier binär) mit einer Menge an Zahlen (hier den natürlichen). N kann dezimal, binär, octal, hexadezimal, ... dargestellt werden. Ist als mathematische Operation beschreibbar. Es ist eine Übungsaufgabe, kein reales Problem. Für eine einfache Umsetzung vom Algorithmus ist der Shift-Operator verzichtbar, bzw. hier durch Division ohne Rest und Verdoppelung ersetzbar. Für das Verständnis, warum ein solcher Algorithmus in dieser Form sinnvoll sein kann, ist sie jedoch IMO sinnvoll. Da ich nicht in seiner Vorlesung/Übung war, weiss ich nicht, was die Macher der Aufgabe für eine Lösung erwarten. Daher kann ich nur einen Lösungsweg anbieten, der mir zusagt und in diesem Fall spontan eingefallen ist. Es ist allerdings schon denkbar, das nur etwas einfacherers gefordert war, denn gestern war für ihn evtl. erst der erste Tag der Vorlesungszeit.
  19. Das wäre dann aber keine sichere Signatur. Sie sollte schon fälschungssicher sein.
  20. Die "Formel" wäre "Ergebnis=x*y". Aber genau die Operation "*" soll ja mit einem Algorithmus (dem beschriebenen) umgesetzt werden. Fordern wir für den Algorithmus nun eine Formel, würden wir uns im Kreis drehen . Letzlich aber alles eine Frage der Definition Implementationsdetails sind keine wirklichen drin, ich habe es nur etwas vereinfacht, was ihm vielleicht bei der Umsetzung hilft (Zwischensumme statt dem Streichen von Zeilen und Aufsummieren der Übrigen). Die Multiplikation mit Shift zu machen ist IMO wichtig, denn wenn man y=y[i-1]*2 rechnet, hätte man wieder eine Multiplikation drin (wer will hier schon rekursiv werden? ), und genau die Multiplikation soll ja beschrieben werden. Analog die Division: Teilen durch 2 am besten vermeiden und durch Rechts-Shift ersetzen. Das mit dem möglichst kleinen Divisionsrest (der größten Zahl die bei Division mit dem kleinstem Rest entsteht) erübrigt sich so auch automatisch.
  21. Das Teilen der xi Werte ist ein Bit-Shift nach Rechts. Das Verdoppeln von yi ein Schift nach links. Danach machst Du einen Test auf das Recht Bit von xi(entspricht der gerade/ungerade Entscheidung) und wenn das Bit gesetzt ist (Zahl ist gerade), dann addierst Du den Inhalt des Registers/der Variable yi zum Zwischenergebnis. Nicht vergessen, das Zwischenergebnis mit 0 zu initialisieren und die erste Zeile (i=1, also die Eingabe) ebenfalls zu berücksichtigen. Für die Multiplikation brauchst Du also nur die Addition, einen Bit-Test und Bit-Shifts als zugrundeliegende Operationen. Ich hoffe das hilft und verwirrt nicht
  22. Du mußt eine Referenz übermitteln - wie Du das machst ist egal. Ohne geht's nicht... Gut, anderer Vorschlag: Wenn Du Windows.Forms benutzt, kannst Du grundsätzlich auf die übergeordentetn Container eines Controls zugreifen (über die Parent Property). In diesem Parent (z.B. dem Form) kannst Du nun einen Verweis auf ein Objekt unterbringen, in dem die Daten, auf die zugegriffen werden sollen, untergebracht sind.
  23. Vermutlich meinst Du sowas (signcode.exe assistent): http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_vccore_signing_a_cab_file.asp Es gibt aber mehrere Wege Dateien zu signieren (SignTool.exe macht so etwas auch). Zum überprüfen der Signatur schau mal nach (nur Stichpunkte, ob's damit klappt, weiß ich nicht): CAPICOM CertGetCertificateChain CertVerifyCertificateChainPolicy WinVerifyTrust WinVerifyTrustEx MsiGetFileSignatureInformation (Braucht Windows Installer 2.0)
  24. Wenn Excel installiert ist, geht theoretisch es über die COM Schnittstellen von Excel (Interop). Allerdings, was spricht dagegen, die eine Spalte in eine Textdatei zu exportieren, wo in jeder Zeile ein Wert steht, und diese Datei einzulesen?
  25. Die Methoden existieren nur 1x, egal wie viele Instanzen Du erzeugst. Beim Aufruf nicht statischer Methoden (=Instanz des Objektes vorhanden), wird lediglich unsichtbar ein Verweis auf die zu verwendende Instanz übergeben.

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...