Autor Beitrag
Listing
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: So 31.12.06 15:34 
Hi leute,
ich habe vor einen Kleinen Packetsniffer zu schreiben der das DNS Protokoll überwacht
(also wenn da eine Anfrage gesendet oder Empfangen wird)
Ich wollte euch jetzt fragen wie ich das am besten anstelle, in C++ habe
ich das immer mit WinPCap gemacht und ich könnte es auch wieder tun nur ich möchte
das gleiche mal mit Delphi machen :-)
Gibt es da eine gute Komponente?
Geht sowas mit Indy?

Danke schonmal für eure Antworten.

Frohes neues Jahr @ all
Listing Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: So 31.12.06 17:53 
Ich versuche grad ein Packet in einer MessageBox auszugeben doch es ist einfach
nicht auszuhalten, Delphi aktzeptiert die Konvertierung nicht:
ausblenden Delphi-Quelltext
1:
myDNS[(Length(myDNS)+1)] := pPkt[myCounter];					

ausblenden Delphi-Quelltext
1:
[Pascal Fehler] MainUnit.pas(141): E2010 Inkompatible Typen: 'Char' und 'Byte'					

:-/

Er soll doch einfach die Bytes an den Platz des Strings schreiben, die ergeben schon valide Buchstaben...
Kann ich das iergendwie konvertieren?
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: So 31.12.06 20:26 
Du musst auch die Typen beachten ! Du versuchst einen Buchstaben als Zahl darzustellen. Geht das so in C ? :hair: Dann erkläre mal welche Zahl ohne Konvertierung bei einem Ä geliefert wird. Sollte da automatisch ein Ascii-Wert oder so rauskommen, das wäre ein weiterer Grund mit altertümlichen C+Co. nichts zu machen. :mrgreen: Für Dich ist allerdings nur StrToInt oder IntToStr relevant. -> Hilfe

_________________
Gruß
Hansa
Listing Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 01.01.07 01:58 
user profile iconhansa hat folgendes geschrieben:
Du musst auch die Typen beachten ! Du versuchst einen Buchstaben als Zahl darzustellen. Geht das so in C ? :hair: Dann erkläre mal welche Zahl ohne Konvertierung bei einem Ä geliefert wird. Sollte da automatisch ein Ascii-Wert oder so rauskommen, das wäre ein weiterer Grund mit altertümlichen C+Co. nichts zu machen. :mrgreen: Für Dich ist allerdings nur StrToInt oder IntToStr relevant. -> Hilfe

Wert im Packet z.B: 4D (4D = 77 = M) mache ich nun IntToStr kriege ich einen String wo 77 drin steht, das will ich nicht...
ich brauche hier kein IntToStr :/
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 01.01.07 02:05 
user profile iconListing hat folgendes geschrieben:

Wert im Packet z.B: 4D (4D = 77 = M) mache ich nun IntToStr kriege ich einen String wo 77 drin steht, das will ich nicht...
ich brauche hier kein IntToStr :/

Dann brauchst du Chr(). Die wandelt eine Zahl in die ASCII-Entsprechung um.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 01.01.07 02:16 
user profile iconhansa hat folgendes geschrieben:
Du musst auch die Typen beachten ! Du versuchst einen Buchstaben als Zahl darzustellen. Geht das so in C ? :hair: Dann erkläre mal welche Zahl ohne Konvertierung bei einem Ä geliefert wird.
Ja, du kannst in C/C++ direkt einen Buchstaben zu einem Byte-Wert casten... Das ist so wie Ord, du schreibst einfach (int) DeinChar, bzw. umgekehrt (char) DeinByteWert... ;-)

user profile iconhansa hat folgendes geschrieben:
Sollte da automatisch ein Ascii-Wert oder so rauskommen, das wäre ein weiterer Grund mit altertümlichen C+Co. nichts zu machen. :mrgreen:
Das ist in C++ und Java genauso :mrgreen:

Und das ist doch auch nur sinnvoll so. Denn an der Speicherstelle steht eben der Ascii-Wert. Warum sollte man also nicht auch einfach sagen können: Ok, diese Speicherstelle interpretiere ich jetzt direkt als Zahl :?: :gruebel:
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 01.01.07 03:46 
Zuerst mal : Prost Neujahr. :beer:

Aber das, was der macht ist so etwas : if 'Ä' = 123 then

Deshalb meine unbeantwortete Zwischenfrage. Rest wurde schon gesagt.

_________________
Gruß
Hansa