Zum Inhalt springen

MadMatrix

Mitglieder
  • Gesamte Inhalte

    32
  • Benutzer seit

  • Letzter Besuch

    Nie

Beiträge von MadMatrix

  1. 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"???

  2. 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]));
    
    

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

    C++ Tutorials

    <FONT COLOR="#a62a2a" SIZE="1">[ 06. September 2001 17:47: Beitrag 1 mal editiert, zuletzt von MadMatrix ]</font>

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

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

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

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

  8. 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. :D

  9. 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! :D

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

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

    :rolleyes: Bitte helft, benötige nur die Info, ob das "normal" ist?

  12. 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 :D, 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.

  13. Moin!

    Also unter 32-bit Platformen machen CFile::Read() und

    CFile::ReadHuge sowieso dasselbe (laut MSDN).

    Das mit dem Array ist aber einfach :D :

    
        ...
    
        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ß! :D

    <FONT COLOR="#a62a2a" SIZE="1">[ 29. August 2001 13:57: Beitrag 2 mal editiert, zuletzt von MadMatrix ]</font>

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

  15. 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;
    
    }
    
    

  16. 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);
    
    }
    
    
    

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