Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   2 array´s lesen (https://www.delphipraxis.net/178599-2-array%B4s-lesen.html)

davtix 16. Jan 2014 17:44

2 array´s lesen
 
heut hab ich irgendwie n gedanken knicks...
könnt mir jemand helfen?? ich kann diese function nicht abrufen.. wo liegt mein fehler?

Delphi-Quellcode:
f:integer

f := saveWEGpos(0,1).xposR

Delphi-Quellcode:
type Txwegslide = array [1..20] of integer;
     Tywegslide = array [1..20] of integer;
type Tposxy= record xposR, yposR: integer; end;
var x:Txwegslide; y:Tywegslide; i:integer;
function saveWEGpos (RW,N :integer) : TposXY; // 1=schreiben 0=lesen
begin

if 1 = RW then
  begin    // alle plätze belegen
      for i:= 1 to 20 do
       begin
          x[i]:= setWEGpos.xWEG; y[i]:=setWEGpos.yWEG;
       end;
  end;

if 0 = RW then begin
   result.xposR:= x[N];
   result.yposR:= y[N];

end;

end;

sx2008 16. Jan 2014 18:04

AW: 2 array´s lesen
 
Diese Funktion ist auch Quark denn sie enthält jede Menge Fehler.

Wenn die Funktion mit dem Parameter RW<>0 aufgerufen wird ist der Rückgabewert völlig undefiniert.
Die Funktion verwendet die globale Variable i was natürlich ein No-Go ist.
Eine Funktion, die abhängig von ihren Parametern völlig unterschiedliche Dinge tut ist absolut nicht empfehlenswert.

p80286 16. Jan 2014 18:15

AW: 2 array´s lesen
 
Was bedeutet
Zitat:

Zitat von davtix (Beitrag 1244009)
ich kann diese function nicht abrufen.. wo liegt mein fehler?

(meistens werden Funktionen aufgerufen)

gibt es eine Fehlermeldung?

Gruß
K-H

davtix 16. Jan 2014 18:22

AW: 2 array´s lesen
 
Delphi-Quellcode:
type Txwegslide = array [1..20] of integer;
     Tywegslide = array [1..20] of integer;
var x:Txwegslide; y:Tywegslide; Si:integer;
function saveWEGpos (RW,N,XY :integer) : integer; // 1=schreiben 0=lesen
begin

if 1 = RW then
  begin    // alle plätze belegen
      for Si:= 1 to 20 do
       begin
          x[Si]:= setWEGpos.xWEG; y[Si]:=setWEGpos.yWEG;
       end;
  end;

if 0 = RW then begin
   if XY = 4 then result := x[N];
   if XY = 5 then result := y[N];
end;

end;

danke , habs so gelöst... ist das besser?
also es soll erst an einer bestimmten stelle beschrieben werden und an einer anderen einzeln gelesen werden

setWEGpos = zufallszahl zwischen 0 und screen width/ top
und RW hab ich nur genommen um nicht zwei funtionen aufzurufen

Zitat:

Eine Funktion, die abhängig von ihren Parametern völlig unterschiedliche Dinge tut ist absolut nicht empfehlenswert.
warum nicht??

himitsu 16. Jan 2014 18:45

AW: 2 array´s lesen
 
Die Funktion nennt sich "Speichern", aber sie tut auch Lesen?
Da kann was nicht stimmen.

Und warum sind alle Variablen global?

Sollte nicht selbst ein uraltes Delphi 5 mit Warnungen um sich werfen?
So von Wegen "Result ist nicht initialisiert".

Was sollte nochmal das setWEGpos sein? Die Art des Aufrufs klingt hier aber auch wieder nach einem GET.

Irgendwie klingt das Ganze nach zwei Funktionen.
- GetWegPos(N): Intgeger
- dann nochmal eine Prozedur ohne irgendeinen Parameter, so ala "fülle alles mit Zufallswerten"

davtix 16. Jan 2014 19:13

AW: 2 array´s lesen
 
upps , stimmt ja hab ich komplett übersehen


Delphi-Quellcode:
type Txwegslide = array [1..20] of integer;
     Tywegslide = array [1..20] of integer;
var x:Txwegslide; y:Tywegslide; Si:integer;
procedure saveandreadWEGpos;
begin
    // alle plätze belegen
      for Si:= 1 to 20 do
       begin
          x[Si]:= setWEGpos.xWEG; y[Si]:=setWEGpos.yWEG;
       end;
end;
und ...
Delphi-Quellcode:
type TMyrec2= record xWEG, yWEG: integer; end;
function setWEGpos:TMyrec2;
type Tfeldx = array [1..4] of integer;
     Tfeldy = array [1..4] of integer;
var zzzW : integer;  feldx:Tfeldx;feldy:Tfeldy;
begin

//oben           X wert                    Y wert
feldx[1]:= ZufallszahlVB(0,screen.Width);   feldy[1]:= -250;
//unten
feldx[2]:= ZufallszahlVB(0,screen.Width);   feldy[2]:= screen.Height + 250;
//rechts
feldx[3]:= screen.Width + 300;              feldy[3]:= ZufallszahlVB(0,screen.Height);
//links
feldx[4]:= - 300;                           feldy[4]:= ZufallszahlVB(0,screen.Height);

zzzW:= ZufallszahlsetWEGpos; // zufalls area erstellen von 1 - 4

result.xWEG:= feldx[zzzW];
result.yWEG:= feldy[zzzW];

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:19 Uhr.

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