Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » Dll- string - Ascii- Frage (eilt wirklich sehr!)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
29.06.2003, 22:02 Uhr
~Pet
Gast


Hi!

Ich habe eine c++ DLL mit Sourcecode. Diese DLL ließt ASCII-Dateien ein, die ich per C# oder vb erstelle, analysiert diese und speichert die Ergebnisse wiederum in ASCII-Dateien. Ich greife über c# / vb darauf zu.

Ich bin kein c++'ler und habe folgende Frage:

- Wie schwer ist es diese c++-DLL so abzuändern, daß von
meiner c# Anwendung keine ASCII-Dateien mehr erstellt
werden müssen, sondern "Strings" an die DLL übergeben
werden, damit diese durch die DLL analysiert und ein
Ergebnis geliefert werden kann?

- Wie kann man dies realisieren?

- Worauf müßte ich besonders achten?

Bin über jeden Hinweis dankbar. Falls jemand Internet-Adressen zu diesem Thema hat, wäre ich auch darüber sehr froh. Im Internet habe ich leider nichts spezielles dazu gefunden.

Danke!

P.S.: Z.Z. verwende ich noch Visual C ++ 6.0, aber ich bin dabei den Code nach Visual c++.Net 2003 zu portieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.06.2003, 10:56 Uhr
~Pet
Gast


Hi!

Warum verschoben? Es geht nicht um c# und auch nicht um die Portierung nach c++.net an sich! Es geht mir ja nur um das Grundsätzliche bzgl. der DLL in c++. Ich finde, daß meine Frage im ursprünglich von mir gewählten Forum (c/c++) richtig plaziert war!...

Nun ja, ich hoffe immer noch das es jemanden gibt, der mir meine Fragen beantworten kann.

Gruß
Pet
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.06.2003, 12:34 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
~Pet postete
Hi!

Warum verschoben? Es geht nicht um c# und auch nicht um die Portierung nach c++.net an sich! Es geht mir ja nur um das Grundsätzliche bzgl. der DLL in c++. Ich finde, daß meine Frage im ursprünglich von mir gewählten Forum (c/c++) richtig plaziert war!...
[...]


DLLs sind Systemspezifisch, das hat nichts mit ANSI C++ zu tun. Insofern ist das ANSI C++ Forum nicht das richtige.
Möglicherweise wird Dich ein Windowsguru noch weiter verschieben: Aber ich habe einfach mal angenommen, daß wenn du mit dem Visual C++.NET 2003 arbeitest, in diesem Forum ganz gut aufgehoben bist. Besser jedenfalls als in einem Forum, wo es keine DLLs gibt.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 30.06.2003 um 12:35 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.06.2003, 13:07 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
Was soll denn analysiert werden? Poste doch einmal etwas Quellcode der Funktion(en) der Dll.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.06.2003, 14:31 Uhr
~Pet
Gast


Hallo!

Vielleicht habe ich meine Frage nicht korrekt und deutlich genug formuliert. Also:

Meiner DLL in (c++60 geschrieben) will ich einen String übergeben (mit c#, vb etc). Bei der Übergabe hätte ich keine Probleme. Es geht lediglich um diese DLL.

Der übergebene String soll wie eine ASCII-Datei aufgebaut sein.

Bsp:
Test V01
man 10
Axel 5
Gewicht 20
STRCOP 25 //vor STRCOP ist ein Tab
Test V02
man 10
Flip 5
Gewicht 20
STRCOP 45 //vor STRCOP sind 5 Leerzeichen
Bla2 15


Obiges soll als String im gesamten übergeben werden.

==> Wie lese ich diese Daten in c++ nun ein?

Man bedenke es gibt hier "ENTER" und "Tab" bzw. "Leerzeichen". Ich brauche die Texte hieraus, um diese dann in der DLL weiter verarbeiten zu können.

Und hier habe ich ein (großes!) Defizit in c++.


Ich hoffe, jemand hat ne Idee und kann mir helfen.

Vielen Dank!

P.S.: Die DLL analysiert diesen String insofern, daß er best. Berechnungen aufgrund dieser Angaben durchführt und mir dann das Ergebnis als ASCII-Datei zurückliefert.
Leider kann ich aus lizenzrechtlichen Gründen keinen Code posten! Ich hoffe dennoch auf Hilfe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
30.06.2003, 20:19 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
Erzeuge mal bitte nachfolgende Dll's mit VC++6.0

C++:
// FirstDll.dll
#include <windows.h>

BOOL __stdcall DllMain(HINSTANCE hInst,
                       DWORD dwReason,
                       LPVOID lpReserved) {
   return TRUE;
}

__declspec(dllexport) void __stdcall Message(char* p_szMessage)
{
   MessageBox(NULL, p_szMessage, "MessageBox aus der Dll", MB_OK);
}




C++:
//SecondDll.dll
#include <windows.h>

BOOL __stdcall DllMain(HINSTANCE hInst,
                       DWORD dwReason,
                       LPVOID lpReserved) {
   return TRUE;
}

extern "C" __declspec(dllexport) void __stdcall Message(char* p_szMessage)
{
   MessageBox(NULL, p_szMessage, "MessageBox aus der Dll", MB_OK);
}



Als erstes musst du beim Dll-Bau auf die Aufrufkonvention achten. _stdcall übergibt die Parameter von rechts nach links.
Wenn Du die erste Dll aufrufst Krachsts, da Du dir durch __declspec(dllexport) eine Namensergänzung durch den C++ Compiler einfängst. durch Variante zwei wird dies behoben.
Aufrufer:

C++:
using System;
using System.Runtime.InteropServices;

namespace Aufruf
{
    
    class Class1
    {
        private
            const string FuenfLeerZeichen = "     ";
        [DllImport("SecondDll.dll")] // FirstDll.dll;
        static extern void Message(string msg);
        static void Main(string[] args)
        {
            
            try
            {
                Message("Test V01\n" +
                        "man 10\n" +
                        "Axel 5\n" +
                        "Gewicht 20\n" +
                        "\tSTRCOP 25\n"+
                        "Test V02\n" +
                        "man 10\n" +
                        "Flip 5\n" +
                        "Gewicht 20\n" +
                        FuenfLeerZeichen +
                        "STRCOP 45" +
                        "Bla2 15");
            }
            catch(DllNotFoundException e)
            {
                Console.WriteLine(e.ToString());
            }
            catch(EntryPointNotFoundException e)
            {
                Console.WriteLine(e.ToString());
            }
        }

    }
}


Soviel für den Anfang
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
01.07.2003, 12:11 Uhr
~Pet
Gast


Hallo Uwe!

Das hat alles prima geklappt! Du hast mir wirklich sehr geholfen. DANKE!

Jetzt stehe ich aber vor dem nächsten Problem in VC++60 :


extern "C" __declspec(dllexport) void __stdcall Message(char* p_szMessage)


1. Wie kann ich diese char* p_szMessage erstmal in einen String umwandeln?

2. Wie kann ich sequenziell diesen String von vorne nach hinten durcharbeiten?
Der übergeben String ist ja wie Du schon weißt wie eine ASCII-Datei aufgebaut und enthält Leerzeichen (als Trennzeichen zwischen zwei Worten in einer Zeile) und Enter.

3. Ich muß also jedes Wort einzeln aus diesem String rausholen, innerhalb der DLL weiterleiten, bearbeiten und mich dann an das nächste Wort ranmachen.

Kannst Du mir dabei vielleicht helfen?

Vielen Dank im voraus!

Gruß
Peter
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
01.07.2003, 22:56 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
wie willst Du vorgehen? MFC / API ?
Bist Du das da oben im C/C++ Forum?
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
02.07.2003, 10:22 Uhr
~Peter
Gast


Mein Commingout:

Hallo Gemeinde, Hallo Uwe!

Okay, ich oute mich! Vorab: Großes Sorry!

Mein Name ist Peter mein Nick-Name ist Sascha. Manchmal vergesse ich, ob ich mit meinem tatsächlichen Namen in einem Forum auftrete oder mit meinem Nick. Es war bestimmt keine Absicht! Ich wollte auch keinen verärgern oder in den Rücken fallen.

Nachdem ich mir die Nacht um die Ohren gehauen und von Uwe nichts gehört hatte, dachte ich, irgendwie muß Du ja vorankommen, (und da ich immer noch überzeugt war, daß meine Frage ins c++-Forum gehört), habe ich meine aktuellste Frage dort nochmal formuliert.

So.., jetzt ist es raus und mir geht es jetzt auch viel besser!

Gruß
Peter

P.S.: Wenn keiner mehr auf mich sauer ist, kann ich meine Fragen in diesem Forum bzgl. meiner Problematik weiterhin stellen, oder soll ich mich von hier verziehen? Wären dankbar für ein Feedback!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
04.07.2003, 08:44 Uhr
virtual
Sexiest Bit alive
(Operator)


Mir ist es herzlich egal, wie Du dich nennst: Du bist eh nicht registriert, von daher kannst du jeder und keiner sein. Von daher geniesst Du weder besonderes Vertrauen oder Mistrauen meinerseits.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: