MadMatrix
-
Gesamte Inhalte
32 -
Benutzer seit
-
Letzter Besuch
Nie
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von MadMatrix
-
-
Schau dir mal dieseSite an. In Beispiel zwei steht z.B., wie man ein Signal mit einem Slot verbindet.
Für dein Prog verbindest du das Signal clicked() des Buttons mit einem Slot deiner Application, in dem du dann nur ButtonObject.setText("Wurde schonmal angeklickt");
aufrufst:
QObject::connect(&[i]ButtonObject[/i], SIGNAL(clicked()), &[i]ApplicationObject[/i], SLOT([i]SetTextSlot[/i]));
-
Du musst, wenn du DirectDraw nutzen willst,
dir eine DX7.0 Dokumentation besorgen.
In DX8.0a gibt's ja kein DirectDraw mehr.
-
Spontan fällt mir nur ACE Password Recovery ein,
das ist ein Brute-Force-Programm.
Such mal bei de.altavista.com nach "ACE Password Recovery",
im Notfall musst du dass Lexikon erweitern.
-
Bist du bereits im Besitz eines Compilers?
Oder sogar mit IDE?
Tutorial gibt's doch wie Sand am Meer, wäre aber
notfalls auch bereit, ein Einsteigertutorial zu schreiben.
Hasi hat in einem letzten Thread dazu schon eine gute Seite bekannt gegeben:
<FONT COLOR="#a62a2a" SIZE="1">[ 06. September 2001 17:47: Beitrag 1 mal editiert, zuletzt von MadMatrix ]</font>
-
Wie sollen wir wissen, dass du das Archiv öffnen darfst?!?
-
Gerne!
-
Die logische Formatierung wird auch High-Level-Formatierung
genannt, mit z.B. Format legt du so auf einem Datenträger
eine FAT an.
Die physikalische Formatierung oder Low-Level-Formatierung
findet schon beim Herstellen der Datenträger statt,
durch sie findet die Einteilung in Spuren und Sektoren
statt.
-
Kenne zwar den Systemaufbau von Windows Me nicht,
aber unter Windows 9x lag das daran, dass
der Icon-Cache des Systems Fehler aufweist.
Für den Fall gibt es dann in Tools wie TweakUI
eine Option um den Cache zu reparieren.
Aber eigentlich wird der Cache bei jedem Start neu
aufgebaut.
Könnte ein Virus sein, ich mach mich mal schlau...
-
Wie erstellst du die Pipe auf beiden Seiten?
Bei CallNamedPipe zum Bleistift musst du ja
die Puffergröße angeben.
Poste doch mal einen Sourcecode-Auszug, vielleicht
wird's dann einfacher das problem zu finden.
<FONT COLOR="#a62a2a" SIZE="1">[ 31. August 2001 17:29: Beitrag 1 mal editiert, zuletzt von MadMatrix ]</font>
-
Was für Übungsprogramme hättest du denn gern,
gibt's vielleicht irgendwelche Themengebiete,
die dich besonders interessieren?
Du arbeitest, denk ich mal, nicht mit MFC?
-
Vielleicht liegt's ja daran:
Du erstellst am Anfang ein TJPEGImage-Objekt per
TJPEGImage *jpg = new TJPEGImage();
(*)Dann setzt du die Varibale jpg auf einen neuen Wert:jpg = (TJPEGImage *)DBImage1->Picture;
Von nun an hast du keine Kontrolle mehr über das eben erstellt TJPEGImage-Objekt. Schließlich gibst du das Objekt wieder frei:delete jpg;
Nach der Zuweisung bei (*) gibt du aber so ein
TJPEGImage-Objekt an der Speicheradresse von
DBImage1->Picture frei!!!
-
Geh doch einfach mal zu TrollTech,
da gibt's einiges an freien Qt-Programmen mit Sourcecode.
-
Na dann, hier mal ein Versuch:
#include "stdio.h" #include "io.h" #include "string.h" #include "afxcoll.h" void AddResult(const char* lpszPath, const char* lpszFilename) { printf("%s%s\n", lpszPath, lpszFilename); } void SearchDirectory(const char* lpszDirectory, const char* lpszFilename) { _finddata_t finddata; long Handle; // dateien suchen char* lpszWildcard = new char[strlen(lpszDirectory) + strlen(lpszFilename) + 1]; strcpy(lpszWildcard, lpszDirectory); strcpy(lpszWildcard + strlen(lpszDirectory), lpszFilename); Handle = _findfirst(lpszWildcard, &finddata); if (Handle != -1) do { AddResult(lpszDirectory, finddata.name); } while (_findnext(Handle, &finddata) == 0); _findclose(Handle); delete lpszWildcard; // unterverzeichnisse suchen lpszWildcard = new char[strlen(lpszDirectory) + strlen("*.*") + 1]; strcpy(lpszWildcard, lpszDirectory); strcpy(lpszWildcard + strlen(lpszDirectory), "*.*"); Handle = _findfirst(lpszWildcard, &finddata); if (Handle != -1) do { if ((finddata.attrib & _A_SUBDIR) && (finddata.name[0] != '.')) { char* lpszSubDir = new char[strlen(lpszDirectory) + strlen(finddata.name) + strlen("\\") + 1]; strcpy(lpszSubDir, lpszDirectory); strcpy(lpszSubDir + strlen(lpszDirectory), finddata.name); strcpy(lpszSubDir + strlen(lpszDirectory) + strlen(finddata.name), "\\"); SearchDirectory(lpszSubDir, lpszFilename); delete lpszSubDir; } } while (_findnext(Handle, &finddata) == 0); _findclose(Handle); delete lpszWildcard; } int main(int argc, char* argv[]) { SearchDirectory("C:\\Programme\\Microsoft Visual Studio\\", "*.cpp"); return 0; }
Ich bin davon ausgegangen, dass du das ohne MFC machst,
also hab ich dass mal "in richtigem C" geschrieben.
Ich hoffe, dein Stack ist groß genug für ein paar rekursive
Aufrufe.
-
Tja, die gibt's ein Problem.
Die Windows-File-Funktionen bieten keine Routinen
zur rekursiven Dateisuche.
Vorschlag (mit _findfirst() und _findnext()):
Du musst im Stammverzeichnis anfangen und (*)überprüfst dort,
ob die datei vorhanden ist. Ist dies der Fall, merkst du dir
den Pfad, und durchsucht dann das Verzeichnis nach
Verzeichnissen. In jedem Verzeichnis startest du dann wieder
bei (*).
Tip: Such im MSDN nach SCANDIR.C !!!
Viel Spaß, werd mal schauen, ob ich dass nicht besser
hinkriege als Mikroschrott im Beispiel!
-
OK, danke erstmal, werde das mal checken.
-
Hast du mehrere CD-ROM-Laufwerke?
Wenn ja, ist sicherlich nur eines über ein Audiokabel
mit deiner Soundkarte verbunden.
In dieses musst du dann halt deine Audio-CDs packen.
War's das, mir geht's nämlich so?
Frage: Gibt's auch ein analoges Audiokabel mit zwei
Eingängen und einem Ausgang?
-
Also, ich hab da folgendes Problem.
Mein Programm macht nutzt DirectX 8.
Zuerst erstelle ich einen Thread zur Behandlung von
Windowsnachrichten und zum Überprüfen der DirectInput-Events.
Nachdem ich in diesem DirectDraw und DirectInput
initialisiert habe, erstelle ich einen Thread, in dem ich
den eigentlichen Programmcode schreibe.
Diese beiden Threads funktionieren reibungslos, nur werden
halt auch zahlreiche Dlls beim Start geladen, die
anscheinend auch Threads starten.
Folgende Debug-Infos erhalte ich während das Programm läuft:
(... jede menge dlls ...)
The thread 0xFFF18E2B has exited with code 0 (0x0).
(^das ist mein Application-Thread)
The thread 0xFFF1DEFB has exited with code -1 (0xFFFFFFFF).
The thread 0xFFF72F23 has exited with code -1 (0xFFFFFFFF).
The thread 0xFFF1A1D3 has exited with code -1 (0xFFFFFFFF).
The thread 0xFFF1A34F has exited with code -1 (0xFFFFFFFF).
The thread 0xFFF1D877 has exited with code -1 (0xFFFFFFFF).
The thread 0xFFF1DBE3 has exited with code -1 (0xFFFFFFFF).
The thread 0xFFF1D51F has exited with code -1 (0xFFFFFFFF).
The thread 0xFFF1D08B has exited with code -1 (0xFFFFFFFF).
The thread 0xFFF1D207 has exited with code -1 (0xFFFFFFFF).
The thread 0xFFF1CDB3 has exited with code -1 (0xFFFFFFFF).
The thread 0xFFF59D57 has exited with code 0 (0x0).
(^ und das war mein System-Thread)
Aber wieso werden die von den System-Dlls erzeugten Threads
mit -1 als ExitCode beendet???
Ist das der normale ExitCode für Windows-System-Dlls???
Bitte helft, benötige nur die Info, ob das "normal" ist?
-
Turbo Pascal 5.5 gibt's frei im Internet,
also denn Compiler mit IDE.
Zum Beispiel bei:
Dort unter Compiler,
und dann tp55.zip.
-
Danke, maddin, dass du das Missverständnis geklärt hast!
-
Also, tach nochmal!
Ich hab mir jetzt mal den MFC-Sourcecode angeschaut,
die Nachricht WM_KEYDOWN mit wParam = VK_RETURN wird
vom Programmgerüst oft abgefangen.
Aber an der richtigen Stelle kann man trotzdem
unterscheiden , du musst nämlich die Methode
PreTranslateMessage(MSG* lpMsg) überschreiben,
dann klappts, z. B.:
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) { if (pMsg->lParam & 0x01000000) AfxMessageBox("numpad enter tastendruck!"); else AfxMessageBox("normaler enter tastendruck!"); } return CFrameWnd::PreTranslateMessage(pMsg); }
Hab's nochmal ausprobiert, es funktioniert.
-
Moin!
Also unter 32-bit Platformen machen CFile::Read() und
CFile::ReadHuge sowieso dasselbe (laut MSDN).
Das mit dem Array ist aber einfach :
... CStringList StringList; CString String; CStdioFile TextFile; if (TextFile.Open("test.txt", CFile::modeRead)) while (TextFile.ReadString(String)) { StringList.InsertAfter(StringList.GetTailPosition(), String); } TextFile.Close(); } ...
Viel Spaß!
<FONT COLOR="#a62a2a" SIZE="1">[ 29. August 2001 13:57: Beitrag 2 mal editiert, zuletzt von MadMatrix ]</font>
-
Hallo erstmal!
@Crash2001
<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>
Aber was für Werte zeigt der denn dann an beim dritten und vierten %d an, wenn ich dahinter nicht die zu benutzenden Variablen hinschreibe? Weiss das vielleicht noch jemand?
-
Tja, das ist noch ein Relikt aus DOS-Tagen.
Da (nicht nur) die Pfeiltasten ein Teil der erweiterten
Tastatur sind, wird beim Drücken dieser zuerst ein char
mit dem wert 224 generiert, und im folgenden dann der eigentlichen charcode übermittelt. Für die Pfeiltasten sieht
das im Quelltext so aus:
int main(int argc, char* argv[]) { char c; char extc; bool bDone = false; printf("Drücke 'q' um zu beenden...\n"); while (!bDone) { while (!_kbhit()) { // idle tasks } switch (_getch()) { case 224: switch (_getch()) { case 'H': printf("Pfeil-Hoch-Taste gedrueckt!\n"); break; case 'K': printf("Pfeil-Links-Taste gedrueckt!\n"); break; case 'P': printf("Pfeil-Unten-Taste gedrueckt!\n"); break; case 'M': printf("Pfeil-Rechts-Taste gedrueckt!\n"); break; } break; case 'q': case 'Q': bDone = true; break; } } printf("Programm beendet!"); return 0; }
-
Demnach schreibst du das mit MFC?
Dann musst du mit dem Class Wizard für das entsprechende
Fenster einen Windows-Message Handler für das
WM_KEYDOWN-Ereignis erstellen, in dem du dann folgendes
tust:
void [i](OBJECT)[/i]::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default if ((nChar == VK_RETURN) && (nFlags & 0x100)) // erweiterte Entertaste else // normale Entertaste [i](Vorige Instanz)[/i]::OnKeyDown(nChar, nRepCnt, nFlags); }
Audio MPEG Layer 3
in C und C++
Geschrieben
Moin! Jetzt geht's los!
Hat einer von euch zufällig mal eine Library oder DLL
gesehen, die ich mit einer .mp3 Datei füttere, und die
mir dann die Audiodaten (PCM-Format) liefert.
Hab zwar schon einiges ausprobiert, bloss bis jetzt
hat mich keine Freeware wirklich angesprochen, weil
kann nicht kompilert werden, ohne großes umschreiben,
oder ähnliches.
Das ganze soll am besten schon für Win32 kompilierbar
sein.
Oder weiß einer, ob ich irgendwo ein Tutorial herkriege,
ungefähr mit dem Titel "MP3s dekodieren leicht gemacht"???