
schorschi
Mitglieder-
Gesamte Inhalte
116 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von schorschi
-
Was meinst du mit trivial ? Das Vorsicht geboten ist, weiß ich. Aber weiß noch nicht genau worauf ich achten soll. Ich denke immer Speicher reservieren, nutzen und freigeben ist die wichtigste Regel. Was würdest du vorschlagen zum terminieren ? Mit strlen() auf das letzte Zeichen, und wie kopiere ich in einem char* dann das "\0". Mit Name="\0" klapps ja nicht. Das sind die fehlenden Kenntnisse von dennen ich sprach, da muß ich noch mal ran...
-
Ja habe ich, denke ich zumindest. bei char* terminiere ich mit strcat(Name,"\0"); bei char[] mit Name[wert]='\0' obwohl ich mir hier nicht sicher bin, wenn ich zum Beispiel mitten rein terminiere zeigt es offensichtlich keine wirkung, deshalb wandel ich meist in Pointer um und terminiere Sie dann. Mittlerweile habe ich meine eigenen Funktionen durchgesehen, diejenigen wo ich Probleme habe, sind alle nach meiner Meinung vom Speicher her sauber deklariert. Wenn ich überhaupt einen Pointer benutze dann reservierung mit malloc und anschließend mit free wieder freigegeben. Die lokalen Variablen haben ja eh nur eine gültigkeitsdauer bis zum ende der Funktion, soweit ich weiß. Die Pointer welche ich übergebe sind auch meist eine Zeile davor deklariert und initialisiert worden, vor dem Funktionsaufruf.
-
Hallo zusammen, Ich stoße leider immer wieder auf die gleichen Problematiken. Mir fehlen einfach fundierte Kenntnisse in der Stringbearbeitung und Speicherbelegung. SYS:W2K VC 6.0 Konkret habe ich zwei/drei Probleme. 1.a) Wenn ich meine Funktion aufrufe, wird manchmal einer der übergebene Wert nicht übernomen. Das passiert immer an der gleichen Stelle. Rufe ich die Funktion an einer andern Stelle auf, funktioniert alles reibungslos. Beispiel: void GibMirBlaBla(char* wert1,char*wert2,char* &wert3, char* &wert4) { ... } wert1 ist dann auf einmal NULL, die andern alle korrekt. Im Debugger steht, wenn ich in die Funktion eintrette, noch der Wert korrekt drin, sobald der Pfeil vom Debugger über die erste geschweifte Klammer der Funktion geht, ist der Wert NULL. 1.b)Irgendwo in meinem Quellcode werden nacheinander 6 unterschiedliche Methoden aufgerufen welche mir char* als Ergebnis liefern. Ca 20 Zeilen später, wird das gleiche noch einmal gemacht. Beim zweiten Mal funktioniert alles so wie es soll, aber beim ersten mal wird z.B. das Ergebnis der ersten Methode durch das Ergebnis der fünten Methode überschrieben oder besser ich finde im Ergebnis der ersten Methode Teile des Ergebnisses von Methode Nr.5 Ich vermute hier das Speicher doppelt belegt wird bei Problem 1a und 1b, Sie werden wahrscheinlich die gleiche Ursache haben. 2.)Laut Netz soll man char* ganz einfach in CString konvertieren.Supi denkste, wenn ich einen bestimmten char*=CString setze oder mit CString.Insert lade, bekomme ich am Ende des Strings zwei bis drei Sonderzeichen angehängt die dort nicht sein dürfen. Nach zwei Stunden genervten probieren und suche im Netz bin ich hingegangen und habe den char* Zeichenweise in den CString kopiert. Aber das kanns doch nicht sein. Kenntnisse über Fehlerbehandlung habe ich insoweit das ich mit dem Debugger schrittweise den Code abklappere und Variablen auslesen kann....und das war es. Ich weiß ich habe sehr abstrakt geschrieben und Source ist hier nicht besonders sinnvoll wie ich meine. Kann mir jemand eine Quelle nennen mit super einfachen Anleitungen über diese Themen : Speicherbelegung, Zeiger. Jetzt kommt bestimmt wieder mußt Du googeln, das Problem ist eine gescheite Anleitung mit allen Fallstricken und meine wohl falschen Suchbegriffe. Danke Joerg
-
Naja, soweit klappt es mit tcpmon, wenn ich es als Proxy anspreche, also mich in die Mitte klinke. Als Frischling habe ich nur keine Ahnung, wie ich die zum Proxy gesendeten Header an die richtigen unterschiedlichen Webseiten weiterleite. Jetzt müßte ich erst mal einiges über die funktionsweise und nutzen eines Proxis erfahren. Ich werde dann mal 'nen neuen Thread bei Webserver öffnen. Danke erstmal für die Antworten, Gruß Joerg
-
Ja, auf einen Browser Port 80 und 443. Mit Packetyzer bin ich inzwischen weiter gekommen. Allerdings bin ich nun auf das Verschlüsselungsproblem gestoßen, wie du schon beschrieben hast. Hätte ich eigentlich auch vorherr wissen müßen, wenn ich über mein c++ prog auf eine https zugreife, schicke ich ja nichts über normale sockets sondern erst durch die openssl Bibliotheken und dann zum Port raus. Ich denke nur es gibt eventuell doch eine Möglichkeit die Header des Port 443 auszulesen, was aber dann doch über java laufen müßten mit den entsprechenden SSL Bibliotheken im Hintergrund ? Gruß
-
Hallo miteinander. Ich weiß nicht ob ich hier richtig bin mit meinem Thema, mal schauen. Ich suche eine Möglichkeit wie ich die Daten welche über die Ports 80 und 443 gesendet werden, auslesen kann. Etwas genauer: Es werden Header an Webserver gesendet und ich möchte die gesendeten Header und die jeweiligen Request auslesen, ohne die Anfragen zu unterbrechen, halt abhören. Ich habe im Netz was über tcpmon von axis gehört, aber ich komme mit Java, sprich Interpreter usw. absolut nicht klar und bekomme das Teil nicht zum laufen. Hat jemand ne alternative oder gute Anleitung ? Gruß Joerg
-
Klassenassistent VC6.0 -> .Net
schorschi antwortete auf schorschi's Thema in C++: Compiler, IDEs, APIs
Das ich auf ne Coderfrage mal keine Antwort erhalte, bin ich ja gewohnt aber so 'nen simplen Erfahrungbericht ? -
Hallo, soweit ich mal irgendwo gelesen habe ist in der nachfolgenden Entwicklungsumgebung von MS kein Klassenassistent mehr verfügbar, zumindest nicht bei der ersten .Net Version nach 6.0. Naja mittlerweile ist ja die 2005 raus, wie sieht es den da aus, haben die den assi komplett verband? Ich hatte mal gehört MS wollte den assi wieder intregieren ? Bin mir am überlegen ob ich umsteigen soll, vielleicht könnt Ihr mir ein paar Tipps geben, oder euch mal über die versionen auslassen.Auch der unterschied von normal->pro->enterprise Gruß Joerg
-
Wie "interpretiert" ein Browser Javascript
schorschi antwortete auf schorschi's Thema in C++: Compiler, IDEs, APIs
Netzwerkprogrammierung, sprich socketaufbau datenaustausch auch über ssl bekomme ich hin, obwohl ich die Grundlagen lieber besser beherschen würde, aber es funktioniert. Wie ich Dateien speichern und benennen kann weiß ich auch. Die kombination beider, den download einer Datei und das anschließende speichern der Datei meine ich. Vielleicht drücke ich mich auch schlecht aus, oder der Weg ist zu simple das andere ein Problem damit sehen. File I/O als Stream, ok habe ich noch nicht gemacht. Was ich machen möchte habe ich bereits oben beschrieben, Html seite anfordern und die Cookiemanipulation des Javascriptes der Seite emulieren. -
Wie "interpretiert" ein Browser Javascript
schorschi antwortete auf schorschi's Thema in C++: Compiler, IDEs, APIs
@ Amstelchen Hast ja recht, deshalb frag ich ja. Ich möchte halt erfahren wo und welche Gruppen sich mit Browserprogrammierung beschäftigen um eventuell dort Anschluß zu erhalten @Aiun Sowas hatt ich mir fast gedacht, so wie die Prüfung einer Emailadresse @JesterDay Danke für Deine ausführliche Antwort. Ich werde wohl eine klasse erstellen welche mir eine Befehle interpretiert, scheint die beste Lösung zu sein. Zum Glück muß ich nur eine Handvoll Befehle wiedererkennen. Ich muß ja keinen kompletten Browser emulieren Hat von euch einer 'nen Tipp wie ich die Datei downloade und mit eigenem Namen abspeichern kann ? Ich weiß das geht jetzt wieder sehr speziell Richtung C++... Danke nochmal an euch für die Antworten -
Wie "interpretiert" ein Browser Javascript
schorschi antwortete auf schorschi's Thema in C++: Compiler, IDEs, APIs
Tja ansteuern von Engines habe ich noch nie gemacht. hört sich interessant an. Zum parsen.., Na ja da wäre halt interessant zu wissen wie ein Browser arbeitet. Da ich halt die gleiche arbeit machen muß. Ich denke mal das parsen an sich ist nicht das Problem. Ich stelle mir vor, eine Htmlseite ruft das Script auf und die darin enthaltene Funktion.Die Funktion wird im Script gefunden (Bis dahin wüßte ich den Ansatz), aber : Nun müßte ich den Inhalt der Scriptfunktion auslesen und diesen Inhalt "interpretieren" sprich ausführen. Und da liegt das Problem für mich. Angenomen dort in der Scriptfunktion steht : ... i++; ... Wie kriege ich meinen Quellcode dazu "i" zu inkrementieren ? Für mich ist es in dem Moment nur eine Variable vom Typ CString oder char*, fertig. Ich kann, soweit ich weiß, in C++ nicht wie in php eine Variable in einer Variblen verarbeiten. Ich denke mal in php wäre es weiniger ein Thema, aber ich kann nicht damit arbeiten. Ich brauche eine ausführbare *.exe Ganz davon ab, das ich im Augenblick auch noch nicht weiß wie ich gesammte Dateien downloade per C++ und auf dem Rechner speicher, sprich die Scripte. Datenströme per Socket ok, aber ganze Dateien ? Aber ich denke das ist das kleinste übel. -
Hallo miteinander. Ich programmiere gerade mit VC6.0 (C++) unter W2K eine Art Browser welcher es mirr erlauben soll, Internetseiten zu lesen. Ich sende Header an den jeweiligen Server und bekomme auch die antworten welche ich auswerte. Bei der Webprogrammierung kann man ja auch per Javascript die Cookies schreiben, auslesen manipulieren. Genau da liegt mein Problem. Die Cookies welche per Header gesendet werden kann ich soweit verarbeiten, allerdings die veräderung der Cookies welche beim Aufruf der Webseite im Browser durch das Javascript veranlaßt werden, kann ich nicht verarbeiten. Natürlich kann man die Webseite mühselig durcharbeiten und die Sache zu Fuß erledigen, allerdings laden Browser ja auch die Scripte und verarbeiten alles korrekt und dynamisch. Hat jemand eine Idee wie ich das Thema angehen soll oder kann mir jemand links zu einem Portal nennen welche Browser entwickeln, wo man sich schlaumachen kann. Ich weiß nicht ob dieser Thread hier richtig platziert ist. Gruß Joerg
-
Wenn du deinen entwickelten Code als ausführbare *.exe haben möchtest, muß du diesen durch mehrere Vorgänge (compilieren,binden) zu einem Maschinenlesbaren Code "übersetzen". Dazu nutzen die meisten eine Entwicklungumgebung, welche dieses auf Knopfdruck erledigt und wo in seltenen fällen per Hand eingegriffen wird. Du kannst auch einen einfachen Compiler nutzen und muß dann, mit selbst eingegebenen Befehlen, den Compiler dazu bringen deinen Code zu übersetzen. Ich würde Dir vorschlagen, Du setzt dich mit demjenigen zusammen von welchem Du deinen Quelltext hast und fragst Ihn nach der Vorgehensweise, oder wenn Du das aus einem Buch abgetippt hast, Blätter mal 50 Seiten zurück und beginne am Anfang. Hört sich schnipisch an ist aber leider die beste Lösung, sorry
-
Email MAPI32.DLL Bild in Body versenden
schorschi antwortete auf schorschi's Thema in C++: Compiler, IDEs, APIs
Ja die html Tags sind einwandfrei angegeben. Nachdem ich den Source, welchen ich für das versenden per smtp client aus dem netz habe, durchforstet habe, ist mir aufgefallen das im header die Mail als "plain" deklariert wird. Ich habe es entsprechend geändert und beim smtp client funktioniert das versenden als html Mail nun einwandfrei. Da ich aber lieber die Mapi.dll einsetzen möchte, würde ich es gern damit hinbekommen. Habe ich den bei der Mapi.dll die Möglichkeit die Deklaration des Headers zu beeinflußen ? Habe bisher nichts gefunden. -
Email MAPI32.DLL Bild in Body versenden
schorschi antwortete auf schorschi's Thema in C++: Compiler, IDEs, APIs
Hat niemand eine Lösungsansatz ? Mittlerweile versende ich die Mails direkt per SMTP aber sobald ich mehr als ca 20 Zeichen als Body sende, wird die Mail nicht mehr als HTML interpretiert sondern als einfacher Test. -
Hallo, ich bastel gerade an einer Methode welche mir mit Hilfe der MAPI32.DLL eine Email über den Installierten Mailclient(Outlook Express) versendet. Bilder im Anhang mit zu versenden funktioniert soweit. Aber: Wie bekomme ich eine html Mail hin, wo ich im Body ein Bild einbaue und im Anhang mitsende. Die Problematik ist das ich dem Eintrag des Bildes im Body der Mail ja den Speicherplatz des Bildes bekannt geben muß. Im Anhang sende ich eine Datei mit, welche ich "Bild.jpg" nenne. Diese kommt auch an, aber ich schaffe es nicht, einen Bezug zwischen dem src="" eintrag und dem Bild im Anhang herzustellen. Kann sein, das dieser Thread hier nicht richig plaziert ist, da ich aber mit VC6.0 arbeite habe ich es mal hier gepostet. W2K, MS VC6.0, Outlook Express Gruß Joerg
-
Eine eigene Methode erstellen mit einer Schleife welche dir bei jedem Durchlauf einen Eintrag in die Combox mit m_crtVariable.AddString(wert) addiert. Sollten sich deine Daten dann irgenwann ändern, Combo löschen und in Funktion zum füllen aufrufen. Ich weiß nicht genau was du mit zugreifen meinst, die aktuelle ID des ausgewählten Eintrages der Box kannst Du dir mit GetCurSel() und den Text mit GetDlgItemText holen.Einen speziellen Eintrag kannst Du auch editieren, aber da weiß ich im augenblick den Befehl nicht. Kann sein das ich mich mit den Befehlen auch vertue, aber das Prinzip läuft so, zumindest unter vc6.0, denke mal das das überall so läuft
-
Hat sich erledigt, habe es hinbekommen. Danke für eure Antworten
-
das mit der statischen ist mein blutiger anfang mit Threads, das das so nicht sicher ist hatte ich schon vermutet. Hast Du dich schon mal mit der Engine 3.5 beschäftigt ? Ich denke mal wenn ich meine Klasse so Umbau das ich von der Engine aus alles erstelle, ist das vielleicht ein Lösungsansatz. Alles in einen Datenbankthread zu packen wäre der letzte Ausweg, aber durchaus denkbar.
-
@Klotzkopf Die Sache mit dem Zugriff per Thread auf meine Datenbankklasse hat sich nach der letzten Nacht etwas geändert. Im Netz ist wohl hauptsächlich zu lesen, das viele die Finger davon lassen da angeblich die Daoschnittstelle nicht Threadsicher sei. Wie ich inzwischen nachlesen konnte, machen es wohl einige Leute so das Sie mit AfxDaoInit() und AfxDaoTerm() arbeiten, sprich wenn der zweite Thread auf die Datenbankklasse zugreift muß neu initialisiert werden. Na ja der Programmabsturz hat sich nun insoweit verlagert das ich nun mit der Socket- & der Dialogklasse auf meine Datebanbankklasse zugreifen kann, aber: Ich greife von beiden Seiten aus mit einem Pointer auf die Datenbankklasse zu und setze bei benutzung eine static flag, die kommen sich also nicht in die Quere(überprüft). Wenn ich allerdings mit dem Dialog drauf zugreife, erscheint die Meldung "Datenbank exclusiv von .. genutzt und dadurch gesperrt". Merkwürdigerweise bekomme ich immer diese Meldung wenn vorher der Socket den Zugriff hatte.(Der Socket hat auch sauber gearbeitet und den Connect wieder geschloßen,auch überprüft) Greift im Anschluß der Socket wieder zu (kein fehler) und ich öffne den Dialog dann verabschiedet sich beim schließen(!) des Dialoges beim zweiten Aufruf das Programm. Es ist eigentlich völlig eagl wer den ersten Zugriff hat, der Dialog bringt das ganze immer wieder zum abschmieren, allerdings erst nach ein paar Zugriffen. Die Fehlermeldung bein abschmieren ist wieder Access Violation diesmal in der MFC42.DLL..Allerdings diesmal durch AfxDaoTherm() verursacht. und hier komme ich aus: void AFXAPI AfxDaoTerm() { _AFX_DAO_STATE* pDaoState = AfxGetDaoState(); // Close any CDaoWorkspaces left around void* pvKey; void* pvObject; POSITION pos = pDaoState->m_mapWorkspaces.GetStartPosition(); while (pos != NULL) { pDaoState->m_mapWorkspaces.GetNextAssoc(pos, pvKey, pvObject); ((CDaoWorkspace*)pvObject)->Close(); } pDaoState->m_mapWorkspaces.RemoveAll(); // Clean up engine object if necessary if (pDaoState->m_pDAODBEngine != NULL) { pDaoState->m_pDAODBEngine->Release();<<<<<------ Was ich zunächst einmal gern versuchen würde ich die gesperrtmeldung wegzubekommen. Obwohl m_pDaodatabase geschloßen wurde, wird sie ja immer noch blokiert. Ich habe schon versucht per localer deklaration mit new und delete in der Socket und Dialogklasse zu hantieren, kein Erfolg. Ich müßte irgendwie die die Verbindung bzw. Datenbankklasse neu initialisieren denke ich. Quellcode ist hier viel zu viel und in der Summe der Klassen denke ich mal überhaupt nicht übersichtlch. Witzigerweise habe ich durch das überprüfen erst mal SendMessage() kennengelernt um per thread auf die Statusleiste zuzugreifen, wenigstens etwas :marine Was meint Du ?
-
Ist zwar Ewigkeiten her aber wenns geht möchte ich diesen Thread gerne wieder aufleben lassen. Am Thema hat sich nix geändert. Bei Absturz zeigt der Stack folgendes: DAO350! 044c65d3() DAO350! 044d08fb() 24448b00() womit ich ehrlich gesagt wieder mal nix anfangen kann. Eines wunderte mich nur.Wenn ich den Haltepunkt vor der OpenDB anweisung setze, und mit der Mouse über meine Vaiable gehe zeigt er mir weder Adresse oder Inhalt an im Kontex an. Na ja aufgeschoben ist nicht aufgehoben. Bin dankbar für jede Hilfe.
-
Was hälst Du von einem Listensteuerelement oder mit Datenbankanbindung einem FlexDataGrid ? Bei beiden werden die Daten in einer Art Tabelle mit Spaltentitel angezeigt. Ich habe zwar keine Erfahrung in wieweit man direkt Daten eingeben kann, aber zur Not mit einem separaten Editfeld. Gruß Joerg
-
View Ansicht Ausrichtung eines Strings
schorschi antwortete auf schorschi's Thema in C++: Compiler, IDEs, APIs
Hat sich gerade erledigt. Habe beim Ausrichten versehentlich die optionen eines anderen Steuerelementes bisher gebraucht. Mit "TA_RIGHT" klappt es so wie es soll. -
Hallo, ich hoffe es kann mir jemand weiter helfen. Ich gestalte gerade eine SDI Anwendung und in der Ansicht habe ich folgendes Problem Wenn ich einen Text mit pDC->TextOut(...) anzeigen lassen will, so habe ich Probleme beim Ausrichten. Na ich hoffe Ihr könnt mit der folgenden Beschreibung was anfangen: Wenn ich richtig liege, wird der Text in "Form" eines Rechteckes, oder besser "Textblock" gezeichnet. Das Problem ist nun das die Position an welcher das Zeichnen unter TextOut() beginnt, Position links ( oben oder unten ) ist. Dabei endsteht halt das Problem wenn ich eine unbekannte Textlänge habe. kann ich so gut wie gar nicht die exakte Position des Stringendes in der Ansicht bestimmen. Somit kann ich den Text nicht rechtsbündig ausrichten. Ich vermute einfach mal es ist eine Option welche ich irgendwo einstellen kann (pDC) ? Gruß Joerg
-
Listensteuerelement Farbe einzelner Zeile Ändern
schorschi antwortete auf schorschi's Thema in C++: Compiler, IDEs, APIs
Ich muß zugeben nicht so sehr, da habe ich noch ein paar Fragen an Dich. An welcher Stelle rufst Du die DrawItem() auf ? Bisher habe ich ausschließlich über die ControllVariable das Listenelement bediehnt, sprich gefüllt und ausgelesen. Ich denke mal, da Du auch mit cdc arbeitest ist dein Ansatz ein anderer. Wie ich die Textfarbe für alle ändere das weiß ich ja, mir fehlt die selektierung der einzelnen Zeile. Ich vermute mal das das Steuerelement erst gefüllt werden muß bevor ich einzelne Zeilen wieder ändern kann. Ich vermute weiterhin, das Du bevor Du die DrawItem() aufrufst eine bestimmte Zeile selektiert hast ? Gruß Joerg