Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Wichtige allgemeine Fragen (https://www.delphipraxis.net/164756-wichtige-allgemeine-fragen.html)

DeddyH 28. Nov 2011 18:56

AW: Wichtige allgemeine Fragen
 
Warum hörst Du nicht auf uns und liest die Tutorials? Ich habe keine Lust, jetzt hier über den Urschleim zu referieren, die Mühe haben sich bereits andere gemacht.

Klaus01 28. Nov 2011 18:59

AW: Wichtige allgemeine Fragen
 
Zitat:

Zitat von DeddyH (Beitrag 1138297)
Ich bezweifle, dass das mit einem Call By Value so funktioniert wie gedacht.

Vielleicht liege ich ja falsch, aber werden Arrays nicht immer call-by-reference übergeben.
Egal ob es sich um ein statisches oder dynamisches handelt.

Grüße
Klaus

Bummi 28. Nov 2011 19:00

AW: Wichtige allgemeine Fragen
 
zum rumspielen, ausprobieren und entdecken.
Einfach mal alles verdrehen und schauen was dann nicht mehr geht ....

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TSchueler=Array of String;


  TForm2 = class(TForm)
    FuellenMit10: TButton;
    ListBox1: TListBox;
    Umbenennen: TButton;
    NachNameLoeschen: TButton;
    procedure FuellenMit10Click(Sender: TObject);
    procedure UmbenennenClick(Sender: TObject);
    procedure NachNameLoeschenClick(Sender: TObject);
  private
    { Private-Deklarationen }
    FSchueler:TSchueler;
    procedure DisplayArray;
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}



Procedure AddSchueler(var Arr:TSchueler;const Entry:String);
begin
  SetLength(Arr, High(Arr) + 2);
  Arr[High(Arr)] := Entry;
end;

Procedure RenameSchueler(var Arr:TSchueler;Index:Integer;const NewEntryName:String);
begin
  if (Index <= High(Arr)) and (Index >= Low(Arr)) then Arr[Index] := NewEntryName;
end;


Procedure DeleteByIndex(var Arr:TSchueler;Index:Integer);
var
  i:Integer;
begin
   if (Index <= High(Arr)) and (Index >= Low(Arr)) then
    begin
      if Index=High(Arr) then SetLength(Arr,High(Arr))
      else
        begin
            for I := Index + 1 to High(Arr) do Arr[i - 1] := Arr[i];
            SetLength(Arr,High(Arr));
        end;
    end;

end;



Procedure DeleteByName(var Arr:TSchueler;const EntryName:String);
var
  i:Integer;
  foundIndex:Integer;
begin
  foundIndex := -1;
  i := Low(Arr) - 1;
  while (i< High(Arr)) and (foundIndex = -1) do
    begin
       inc(i);
       if Arr[i] = EntryName then foundIndex := i;
    end;
  if foundIndex > -1 then DeletebyIndex(Arr, FoundIndex);

end;


procedure TForm2.UmbenennenClick(Sender: TObject);
begin
   RenameSchueler(FSchueler,5,'Fünf');
   DisplayArray;
end;

procedure TForm2.FuellenMit10Click(Sender: TObject);
var
  i:Integer;
begin
  for I := 1 to 10 do   AddSchueler(FSchueler, 'Test ' +IntToStr(i));
  DisplayArray;
end;

procedure TForm2.NachNameLoeschenClick(Sender: TObject);
begin
  DeleteByName(FSchueler,'Test 10');
  DisplayArray;
end;

procedure TForm2.DisplayArray;
var
  i:Integer;
begin
  Listbox1.Items.Clear;
  for I := Low(FSchueler) to High(FSchueler) do ListBox1.Items.Add(FSchueler[i]);

end;
end.

patti 28. Nov 2011 19:13

AW: Wichtige allgemeine Fragen
 
Zitat:

Zitat von Klaus01 (Beitrag 1138301)
Zitat:

Zitat von DeddyH (Beitrag 1138297)
Ich bezweifle, dass das mit einem Call By Value so funktioniert wie gedacht.

Vielleicht liege ich ja falsch, aber werden Arrays nicht immer call-by-reference übergeben.
Egal ob es sich um ein statisches oder dynamisches handelt.

Grüße
Klaus

Ohne zu wissen, wie es in Delphi wirklich gehandhabt wird, weiß ich, wie das in anderen Sprachen (Java, C) gemacht wird: Bei einem Array wird immer einer Referenz übergeben (alles andere wäre fatal: man stelle sich vor, ein Array der Größe 1000x1000 müsste bei einem Methodenaufruf jedesmal komplett auf den Stack kopiert werden...). Allerdings handelt es sich dabei trotzdem um eine Call-By-Value-Semantik und NICHT um Call-by-Reference! Grund: Wenn ich dem Parameter ein "neues" Array zuweise (und nicht den "Inhalt" des alten Arrays verändere), dann ändert sich beim Aufrufer nichts.

lg

Edit:
Mir fällt gerade ein: In C gibt es m.W.n. sogar einen "Trick", wie man den Compiler wirklich dazu bringen kann, das Array auf den Stack zu kopieren, und zwar, indem man das Array in einen struct einbettet...

Sir Rufo 28. Nov 2011 21:01

AW: Wichtige allgemeine Fragen
 
Zitat:

Zitat von hotkey (Beitrag 1138284)
Hallo , ich gehe in die 12.Klasse und schreibe am Donnerstag eine Informatik-LK-Klausur.

Wir arbeiten mit Delphi.

Nun , ich habe da einige Fragen, hab zwar bei Wikipedia geguckt , aber die Sachen da finde ich nicht so dolle.

Also ; was sind Paramater und warum benutzt man Parameter , wo ist der Vorteil?

...

das ist für mich sehr wichtig.

Ich habe hier ein Dejavu http://www.delphipraxis.net/164205-klausur-fragen.html
Zitat:

Zitat von hotkey (Beitrag 1134073)
Hallo , ich schreibe morgen eine Informatik-LK-Klausur und habe nun ein paar Fragen:

Was sind Parameter , wo ist der Unterschied zwischen Parameter und Variable , haben Parameter einen Vorteil?

...

ist super wichtig !

Mal sehen wie wichtig das nächste Thema wird ... giga, mega oder ultra :roll:

Die Themen-Titel waren auch schon mal besser ...

Delphi-Laie 28. Nov 2011 21:50

AW: Wichtige allgemeine Fragen
 
Zitat:

Zitat von hotkey (Beitrag 1138290)
Das habe ich mir schon angeguckt.

Mein größtes Problem ist ja , dass , wenn ich einen Array habe , wie in meinem ersten Thread zu sehen ist , an diese Daten übergeben will , mit einer FUNKTION.
Wie geht sowas ? Das steht leider NICHT in diesem Tutorial.

Ich will zum Beispiel dem Feld 2 einen anderen Namen zuweisen , mit einer Funktion , wie geht das ?

Oh meine Güte, mir reißt der Geduldsfaden.

William, genannt Bill Gates, erzählte (ich will nicht von prahlen sprechen), daß er das Programmieren lernte, indem er weggeworfene BASIC-Ausdrucke intensiv studierte - er war sich dafür angeblich sogar nicht zu fein, sie aus Papierkörben / Abfallcontainern zu fischen/angeln. Studieren kommt aus dem Latein und heißt soviel wie sich befleißigen. Dieses Forum (und andere Foren) ist (sind) überfüllt mit Quelltexten. Wie wäre es demnach, in diesem (diesen) zu stöbern, anstatt hier den Frageroboter zu spielen?

Delphi-Laie 28. Nov 2011 22:02

AW: Wichtige allgemeine Fragen
 
Zitat:

Zitat von hotkey (Beitrag 1138287)
Na gut , aber es wäre nett , wenn das mit diesen Funktionen erläutert wird , denn ich möchte wissen wie man Daten an Arrays über Funktion vergeben kann , das ist echt wichtig.

Das ist nicht "echt" wichtig (und auch nicht super, auf Deutsch über) wichtig (wie kann denn etwas "über wichtig" sein??), sondern es ist DIR wichtig. Es ist aber nicht objektiv wichtig (denk' mal an ein Lied Herbert Grönemeyers).

Für einen Abiturienten solltest Du ein wenig mehr Spürsinn und soziale Kompetenz mitbringen. Mit "Ich will" ohne ein Wort des Dankes wirst Du auf wenig Altruismus Deiner Gegenüber stoßen.

Luckie 28. Nov 2011 22:05

AW: Wichtige allgemeine Fragen
 
@Delphi-Laie: Es recht langsam, denke ich.

Wolfgang Mix 28. Nov 2011 22:15

AW: Wichtige allgemeine Fragen
 
Gegen Unwissenheit kann man etwas tun, gegen Dummheit nicht :-D:-D

Luckie 28. Nov 2011 22:26

AW: Wichtige allgemeine Fragen
 
Muss ich hier jetzt jeden einzeln ermahnen? Wenn ihr schon nichts konstruktives zum Thema beizutragen habt, dann schreibt auch bitte nichts. :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:08 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz