code änderung



  • Hey Leute,

    Weis einer von euch was ich wohin tun muss damit der Quelltext funktioniert.

    http://www.codeproject.com/KB/shell/sendtomail.aspx

    Im Builder geht dieser Quelltext irgendwie garnicht.



  • Fehlermeldung? 😕



  • Fehlermeldung -- hmm das ist gut.

    Unzählige und immer andere.
    Das Problem ist das ich nicht genau weis wohin der Quelltext genau gehört.
    muss der oberteil in die .h oder .cpp ?

    Wenn ich genau weis wohin damit dann kann ich die dazugehörigen Fehlermeldungen liefern.



  • Die Class in die h, den Rest in eine Funktion in die cpp, zum beispiel Button-Click-Event.



  • So habe jetzt mal ein neues Projekt erstellt.

    Alle includes eingefügt. dann die class quelltext zu der .h

    und den unteren quelltext als event von einem Button - click.

    ich erhalte nun folgende fehlermeldungen:

    [BCC32 Fehler] Unit1.h(43): E2268 Aufruf der undefinierten Funktion '_tcslen'
    [BCC32 Fehler] Unit1.h(48): E2268 Aufruf der undefinierten Funktion '_tcschr'
    [BCC32 Fehler] Unit1.h(48): E2034 Konvertierung von 'int' nach 'char *' nicht möglich
    [BCC32 Warnung] Unit1.h(48): W8060 Möglicherweise inkorrekte Zuweisung
    [BCC32 Fehler] Unit1.h(90): E2451 Undefiniertes Symbol 'DROPFILES'
    [BCC32 Fehler] Unit1.h(90): E2109 Kein zulässiger Typ
    [BCC32 Fehler] Unit1.h(91): E2451 Undefiniertes Symbol 'LPDROPFILES'
    [BCC32 Fehler] Unit1.h(91): E2379 In Anweisung fehlt ;
    [BCC32 Fehler] Unit1.h(92): E2451 Undefiniertes Symbol 'pDropFiles'
    [BCC32 Fehler] Unit1.h(92): E2109 Kein zulässiger Typ
    [BCC32 Fehler] Unit1.cpp(32): E2451 Undefiniertes Symbol 'hr'
    [BCC32 Fehler] Unit1.cpp(32): E2451 Undefiniertes Symbol 'CLSID_SendMail'

    ich kann leider mit solchen meldungen nichts anfangen



  • Hallo

    Vergiß dieses Beispiel und schau dir lieber gleich eine VCL-gerechte Variante an.
    Natürlich solltest du trotzdem erstmal die Grundlagen von C++ lernen, bevor du mit Mails und GUI-Programmen anfängst.

    bis bald
    akari



  • Das hilft mir leider nicht weiter.

    Der anwender soll ja nicht erst seine pop zugangsdaten eingebn müssen sondern es soll sich ja sein standard mail konto öffnen.

    Trotzdem vielen dank für die mühe.

    Falls doch noch jemand weiter weis wie ich dieses Beispiel unter dem builder zum laufen bekomme wäre ich überaus dankbar.



  • Hallo,

    😕

    Woher willst du denn sein Standard-Mailkonto wissen wenn er es zuvor nicht irgendwo eingegeben hat?
    Indy ist in dem Fall genau das Richtige (IDSMTP und IDPOP3)!

    VlG



  • Hallo

    Das passt schon, der Quellcode benutzt offenbar die MAPI-Schnittstelle (so wie unten geschrieben als Workaround für ShellExecute).
    Eigentlich sollte es reichen, dn langen ersten Codeauschnitt in den Header einer neuen Unit zu kopieren (zwischen die Incude-Guards), den zweiten kurzen Codeausschnitt in die OnClick-Methode eines Buttons auf dem Form. Und dazu in die Implementationsdatei des Form oben ein include auf den Header der neuen Unit.

    bis bald
    akari



  • Hmm,
    eine ganze Menge wird scheinbar in der Klasse rumgemeckert.
    Was verstehtst du denn unter "includes eingefügt"?

    Fehler wie:
    [BCC32 Fehler] Unit1.h(43): E2268 Aufruf der undefinierten Funktion '_tcslen'
    [BCC32 Fehler] Unit1.h(48): E2268 Aufruf der undefinierten Funktion '_tcschr'
    lassen darauf schließen, dass dir ein Include fehlt?!

    [BCC32 Fehler] Unit1.h(90): E2451 Undefiniertes Symbol 'DROPFILES'
    [BCC32 Fehler] Unit1.h(91): E2451 Undefiniertes Symbol 'LPDROPFILES'
    zeigt zum Beispiel, dass #include <shlobj.h> fehlt...

    VlG



  • hatte die includes in der cpp gemacht.

    habe diese jetzt mit in die h gemacht und jetzt kommen nur noch 2 Fehler

    Er meckert jetzt im quelltext beim button-click event.

    [BCC32 Fehler] Unit1.cpp(37): E2451 Undefiniertes Symbol 'hr'
    Vollständiger Parser-Kontext
    Unit1.cpp(27): Analyse: void _fastcall TForm1::Button1Click(TObject 😉
    [BCC32 Fehler] Unit1.cpp(37): E2451 Undefiniertes Symbol 'CLSID_SendMail'
    Vollständiger Parser-Kontext
    Unit1.cpp(27): Analyse: void _fastcall TForm1::Button1Click(TObject 😉

    Quelltext vom Button Click Event ist original der vom Beispiel:



  • Weiss den wirklich keiner wie die beiden Fehler zustande kommen ??

    Mir reichen ja schon Hinweise wonach ich suchen muss oder was geändert werden müsste.

    Falls nicht dann Danke ich trotzdem schonmal für die bisherige Hilfe von euch.



  • Hallo,

    weder CLSID_SendMail, noch hr sind definiert:

    static const IID CLSID_SendMail = { 0x9E56BE60, 0xC50F, 0x11CF, 
    { 0x9A, 0x2C, 0x00, 0xA0, 0xC9, 0x0A, 0x90, 0xCE } 
    };
    
    HRESULT hr;
    

    VlG



  • Hey Super jetzt kann ichs schonmal kompilieren ohne Fehler 😉

    Aber langsam wirds peinlich für mich. Wenn ich jetzt den Button-Click auslöse bekomme ich ne Zugriffsverletzung in modul shell32.dll : Lesen von Adresse 00000000.

    Eigentlich sollte ja das Beispiel dort Funktionieren bei anderen ja wohl auch.

    Ich mache halt eigentlich andere Dinge und brauche aus diesem Bereich nur diese Sache deshalb hab ich hiervon wenig Ahnung.



  • Hallo,

    an dem Punkt kommt der Debugger ins Spiel, mithilfe dessen du nun Step für Step durch deinen Code springen kannst um zu schauen an welcher Stelle der Fehler auftritt.

    Am Anfang der Routine einen Haltepunkt setzen, Projekt starten und am Haltepunkt angekommen mit F8 durch deine Routine springen, oder mit F7 durch alle abhängigen Routinen (Dateien, Funktionen, usw.) laufen.

    VlG



  • Danke das mit dem F8 wusste ich noch garnicht. ist ja echt genial.

    also er verursacht den Fehler an dieser Zeile bzw nachdem er sie abgearbeitet hat.

    pDropTarget->Drop(pDataObject, MK_LBUTTON, pt, &dwEffect);

    Sagt euch das was ?



  • Hallo,

    wir reden hier von Objekten die einfach zu spezifisch sind um sie zu analysieren! Entweder du hast nun Glück und irgendwer hatte genau das gleiche Problem schon einmal, oder du musst dich selbst auf Lösungssuche begeben...

    Ich an deiner Stelle würde mich am Objekt "pDataObject" oder an der Funktion "Drop" aufhängen! Eins von beiden wird den Fehler verursachen!
    Nutze dafür das F7-Debug-Feature und Step dich ein wenig Tiefer in die Methoden rein 🙂

    VlG



  • Ich danke trotzdem für die Hilfe.

    Werds wohl aufgeben denn das tiefere nachschauen sieht für mich aus wie ein in latainisch geschriebener Roman der zusätzlich 2 mal verschlüsselt wurde 😉


Log in to reply