AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Parameterübergabe - leichte Verwirrung

Ein Thema von rowkajjh · begonnen am 16. Jan 2006 · letzter Beitrag vom 18. Jan 2006
 
rowkajjh

Registriert seit: 9. Jan 2006
38 Beiträge
 
#1

Parameterübergabe - leichte Verwirrung

  Alt 16. Jan 2006, 17:54
Hallo,

wenn man was nicht ganz versteht, macht man sich ja ein Beispiel
Ich komme mit Proceduren und wann übergebene Parameter verändert werden noch nicht ganz klar. Mein Beispiel:

Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,Graphics;

Procedure cbCopy(i : Integer);
begin
  i := 1;
end;

Procedure cbVal(var i : Integer);
begin
  i := 2;
end;

Procedure cbCopyImg(img : TBitmap);
begin
  img.Width := 20;
  img.Height := 20;;
end;

Procedure cbValImg(var img : TBitmap);
begin
  img.Width := 30;
  img.Height := 30;
end;

var
  i : Integer;
  img : TBitmap;
begin
  i := 0;
  writeln(Format('i:%d', [i]));

  cbCopy(i);
  writeln(Format('i:%d', [i]));

  cbVal(i);
  writeln(Format('i:%d', [i]));

  img := TBitmap.Create;
  img.Width := 10;
  img.Height := 10;
  writeln(Format('w:%d h:%d', [img.Width, img.Height]));

  cbCopyImg(img);
  writeln(Format('w:%d h:%d', [img.Width, img.Height]));

  cbValImg(img);
  writeln(Format('w:%d h:%d', [img.Width, img.Height]));

  FreeAndNil(img);
  Readln;
end.
Das 'i' bei cbCopy nicht und bei cbVal verändert wird, ist mir sofort logisch. Aber bei img nicht so. Dieses ist ja nach beiden Proceduren verändert. Liegt das darin, daß img eine Art Zeiger auf ein TBitmap-Objekt ist, und wenn ich einen Zeiger kopiere, dann kann ich natürlich den Inhalt, auf den der Zeiger zeigt, ändern?

Wenn ich den Zeiger selbst in der Procedure umbiegen würde (also auf was anderes zeigen), da würde das Ergebnis bei den beiden Proceduren unterschiedlich aussehen, oder?

Jetzt, wo ich das schriebe, wirds mir langsam klar. Ist meine Erkärung so richtig?

Danke!

Wenn ich was mit
OBJECT i; und i := OBJECT.Create anlege, kann ich das dann in allen Proceduren ändern?
  Mit Zitat antworten Zitat
 


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 07:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz