Autor Beitrag
Mortal-Shadow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 110



BeitragVerfasst: So 07.09.08 23:46 
Ich habe mir gerade das Tutorial von Narses zu einem Chatprogramm durchgelesen. (www.delphi-library.d...rial+V300_54269.html)
Bis auf eines ist mir das ganze auch relativ klar.
Und zwar gibt es eine procedur:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.ParseBuffer;
var
Data : TStringlist;
{...}
begin
Data := TStringlist.create;
try
        {...}

                        execute(Current, Data); 
                {...}
finally
        Data.free;
end;

hierbei wird mit der stringlist gearbeitet.
Dann wird sie der Prozedur execute übergeben, welche folgendes macht.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Execute(const Command: TCmdToken; Data: TStringList);
var i : Integer;
begin
case Command of // Befehle fallunterscheiden:
cmdNOP: // naja, eben nichts tun...
;
cmdSAID: // Text mit Autorenangabe anzeigen
Log.Lines.Add(Data.Strings[1]+': '+Data.Strings[2]);
cmdUSER: // User-Liste aktualisieren
Clients.Items.CommaText := Data.Strings[1];
else // ungültiges Kommando loggen und dann wegwerfen
Log.Lines.Add('Unbekanntes Kommando: '+Data.Strings[0]);
end;
// verarbeitete Werte löschen
for i := 1 to Syntax[Command].ArgCount do // soviele Werte, wie dieser Befehl hat
        Data.Delete(0); // aus der Befehlskette (vorne!) löschen

end;

Wichtig dabei ist, dass die stringlist data nur in execute 'gekürzt' wird.
Die prozedur parsebuffer hat sogar eine whileschleife, welche funktioniert, solange noch Inhalt in 'Data' ist.
Trotzdem wird diese nicht zu einer endlosschleife.
Ganz offensichtlich wird also von beiden prozeduren auf den gleichen adressbereich zugegriffen.
Warum ist das so?
Wird wenn eine stringlist übergeben wird, standartmäßig ihre adresse, statt ihr wert übergeben?
Gruß, MS.


Moderiert von user profile iconNarses: Topic aus Dateizugriff verschoben am So 07.09.2008 um 23:47
Moderiert von user profile iconNarses: URL-Tag hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 07.09.08 23:49 
Moin!

user profile iconMortal-Shadow hat folgendes geschrieben:
Wird wenn eine stringlist übergeben wird, standartmäßig ihre adresse, statt ihr wert übergeben?
Genau so ist das, es handelt sich hierbei ja um ein Objekt, die als Zeiger repräsentiert werden. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.