hi
bin gerade am netzwerk coden und hab nun eine frage
hab n tut wo pointer erklärt werden und da steht das man die pointer dereferenzieren muss.. also mit ^ am ende des pointers
bevor man dem was zuweisen kann oder auslesen kann..
es steht auch drin das delphi das auch ohne ^ kann aber wieso steht das dann so im tut drin? ( also mit ^ )
tutcode:
Delphi-Quellcode:
GetMem(FormP, SizeOf(TMultipleForm)); { --> reserviert an der Adresse von FormP den Speicher für die Form}
FormP^ := TMultipleForm.Create(Self); // --> erzeugt die Form
FormP^.Caption := FormP^.Caption + IntToStr(Liste.Items.Count + 1);
FormP^.Label1.Caption := LabelText.Text;
FormP^.OnHide := ListeClick; { --> beim verstecken des Fensters muss ja die Button-Aufschrift aktualisiert werden...}
FormListe.Add(FormP); // --> fügt den Pointer zur Liste hinzu
Liste.Items.Add('Form' + IntToStr(Liste.Items.Count + 1));
in den
indy demos ( tcpserver ) sieht das onConnect so aus:
Delphi-Quellcode:
procedure TServerFrmMain.ServerConnect(AThread: TIdPeerThread);
var
NewClient: PClient;
begin
GetMem(NewClient, SizeOf(TClient));
NewClient.DNS := AThread.Connection.LocalName; // wieso nicht NewClient^.DNS := ... ??
NewClient.Connected := Now;
NewClient.LastAction := NewClient.Connected;
NewClient.Thread :=AThread;
AThread.Data:=TObject(NewClient);
try
Clients.LockList.Add(NewClient);
finally
Clients.UnlockList;
end;
Protocol.Lines.Add(TimeToStr(Time)+' Connection from "'+NewClient.DNS+'"');
end;
wieso wird bei der delphi demo auf die dereferenzierungs zeichen verzichtet ? der code funzt ja.. ist es echt so das das delphi automatisch dereferenziert ? weil wie oben zu sehen in dem tut ist es ja explizit "manuell" dereferenziert worden o_O
die 2. frage ist.. wieso krieg ich bei der ersten zeile code ( newclient.dns ... ) einen error ( speicherzugriff ) wenn ich GetMem verwende und wenn ich New(newclient) verwende funzt es einwandfrei ? ( wenn ich bei getmem einen breakpoint setze und dem ding ein wenig zeit gebe dann tut es aber auch mit getmem !! ??? )
komische sache..
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!