AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) C++ Inhalt eines String-Buffers char **
Thema durchsuchen
Ansicht
Themen-Optionen

Inhalt eines String-Buffers char **

Ein Thema von napsterxx · begonnen am 31. Okt 2008 · letzter Beitrag vom 3. Nov 2008
Antwort Antwort
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#1

Inhalt eines String-Buffers char **

  Alt 31. Okt 2008, 12:53
Also ich habe hier ein Code-Snippet:
Code:
void CExampleTcpPlugin::BeforeSendToRemote(UINT32 sessionId, UINT32 toUserId,
                            char ** ppData ,int * pDataLen, bool * pContinue)
{
   
   file<<"BeforeSendToRemote"<<seperator<<endl;
}
wie kann ich nun anstelle von seperator den Inhalt von ppData in die Datei schreiben? pDataLen ist 103 lang, jedoch habe ich nur mit **ppData den ersten char erhalten.
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  Mit Zitat antworten Zitat
Benutzerbild von Andi1985
Andi1985

Registriert seit: 11. Mai 2007
Ort: NRW
116 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Inhalt eines String-Buffers char **

  Alt 31. Okt 2008, 13:48
versuchs mal damit:

Code:
void CExampleTcpPlugin::BeforeSendToRemote(UINT32 sessionId, UINT32 toUserId,
                            char ** ppData ,int * pDataLen, bool * pContinue)
{
   
   file<<"BeforeSendToRemote"<<**(&ppData)<<endl;
}
mit freundlichen Grüßen,
Andreas
  Mit Zitat antworten Zitat
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Inhalt eines String-Buffers char **

  Alt 31. Okt 2008, 15:00
Nein, geht immernoch nicht.
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  Mit Zitat antworten Zitat
Benutzerbild von Andi1985
Andi1985

Registriert seit: 11. Mai 2007
Ort: NRW
116 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: Inhalt eines String-Buffers char **

  Alt 31. Okt 2008, 15:05
Zitat von napsterxx:
Nein, geht immernoch nicht.
Folgendes Beispiel funktioniert bei mir recht gut, vieleicht bringt dich das weiter, ansonsten wüst ich jetzt auch keine Lösung.

Code:
#include <iostream>

using namespace std;

void test(char **ppData) {
   cout << **(&ppData) << endl;
}

int main() {
   
   char buff[] = "Hallo Welt";
   char *pBuff = &buff[0];

   test(&pBuff);

   system("PAUSE");
}
b.z.w. mit Stream schreiben:

Code:
void test(char **ppData) {
   fstream file("test.txt", ios::out);
   file << **(&ppData);
   file.close();
}
mit freundlichen Grüßen,
Andreas
  Mit Zitat antworten Zitat
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Inhalt eines String-Buffers char **

  Alt 31. Okt 2008, 15:44
Bei dem Inhalt handelt es sich um ein UDP Paket. Das Problem ist, ich weis wie lang es sein muss aber bekomme auch bei deiner Methode nur 3 Zeichen angezeigt.
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  Mit Zitat antworten Zitat
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Inhalt eines String-Buffers char **

  Alt 1. Nov 2008, 19:03
Glaube das liegt an was anderem, das der String vll 0-terminiert ist oder so?


Delphi-Quellcode:
   file<< "0: " <<**(&ppData)<<endl;
   file<< "1: " <<*(&ppData)<<endl;
   file<< "2: " <<(&ppData)<<endl;
   file<< "3: " <<**(ppData)<<endl;
   file<< "4: " <<*(ppData)<<endl;
   file<< "5: " <<**(&ppData)[0]<<endl;
   file<< "6: " <<*(&ppData)[0]<<endl;
   file<< "7: " <<(&ppData)[0]<<endl;
   file<< "8 " <<(ppData)[0]<<endl;
4, 6, 8 liefern jeweils den selben Wert
5, 3, 0 liefern jeweils den selben Wert
1, 2, 7 sind Adressen

Bleiben 2 Version: 0 und 4

Davon ist meiner Meinung nach aber nur Version 4 relevant, aber ich bekomme hier nur 3 Zeichen angezeigt, mehr als bei allen anderen, aber trotzdme viel zu wenig.
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  Mit Zitat antworten Zitat
CorVu5

Registriert seit: 31. Dez 2007
26 Beiträge
 
Delphi 7 Professional
 
#7

Re: Inhalt eines String-Buffers char **

  Alt 3. Nov 2008, 20:39
Es ist ja sehr wahrscheinlich, dass im Paket mal OOh vorkommt. Genaugenommen ist es sogar immer so, wenn ich mich nicht irre.
Du solltest zuerst den String in Hex umwandeln und dann anzeigen, bzw. nicht darstellbare Zeichen in "." oder so umwandeln.
Das Leben ist wie ein Strand...und dann stirbt man.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz