Ok, jetzt hatte ich mal etwas Zeit mir das Ganze anzuschauen.
Im zweiten von dir geposteten Link ist u.a. dieser Delphi-Code drin:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
FStream: TFileStream;
SizeOfFile: Integer;
pBuffer: Pointer;
begin
FStream := TFileStream.Create('C:\Programme\TEXT22.txt', fmCreate or fmOpenWrite);
SizeOfFile := TcpClient1.BytesReceived;
GetMem(pBuffer, SizeOfFile);
try
TcpClient1.ReceiveBuf(pBuffer^, SizeOfFile);
FStream.Write(pBuffer^, SizeOfFile);
finally
FreeMem(pBuffer);
FStream.Free;
end;
end;
Übersetzt nach CBuilder sieht das dann so aus:
C++:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TFileStream *FStream = new TFileStream("C:\Programme\TEXT22.txt", fmCreate || fmOpenWrite);
int SizeOfFile = TcpClient1->BytesReceived;
char *pBuffer = (char *) malloc(SizeOfFile);
try
{
TcpClient1->ReceiveBuf(pBuffer, SizeOfFile);
FStream->Write(pBuffer, SizeOfFile);
}
__finally
{
free(pBuffer);
delete(FStream);
}
}
Generell (falls du kein Pascal kennst) gilt:
Procedures sind in C++ einfach nur Funktionen mit void-Rückgabewert (also ohne Rückgabe). Functions sind Funktionen mit einem Rückgabewert, den du dem Funktionsheader entnehmen kannst.
Unter
var sind dann erst einmal alle lokalen Variablen der Funktion deklariert. Instaziiert werden die Dinger meist später. Das ist etwas, was es so nicht zwingend unter C++ gibt. Wenn in Delphi also steht
, dann heisst das nichts anderes als "in dieser Funktion wird eine Variable FStream verwendet, die vom Typ TFileStream ist". Implizit bedeutet das in Delphi jedoch, daß hier mit einem Pointer gearbeitet wird (da TFileStream kein grundlegender Datentyp ist). Zur echten Verwendung muß unter Delphi dann erst noch eine Instanz von TFileStream erzeugt werden:
Code:
FStream := TFileStream.Create('C:\Programme\TEXT22.txt', fmCreate or fmOpenWrite);
Wenn du FStream in C++ deklarieren und dann auch gleich verwenden willst, kannst du es auch sofort instanziieren:
C++:
TFileStream* FStream = new TFileStream("C:\Programme\TEXT22.txt", fmCreate || fmOpenWrite);
Ich hoffe, ich konnte dir damit etwas weiterhelfen.