Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Position im 2D-Array (https://www.delphipraxis.net/71663-position-im-2d-array.html)

Borti 19. Jun 2006 11:03


Position im 2D-Array
 
Morgen!

Wie kann ich in einem zweidimensionalen array die Position eines Wertes ohne die beiden Indizes angeben?

Gruß,
Borti

s.h.a.r.k 19. Jun 2006 11:08

Re: Position im 2D-Array
 
Meines Erachtens kannst du das in Delphi nur auf diese eine Art und Weise, wie du schon gesagt hast.

Was für eine Lösung hättest du denn gerne? Man kann sicherlich für jedes Problem eine andere Art der Programmierung verwenden!

Borti 19. Jun 2006 11:40

Re: Position im 2D-Array
 
Ich hätte da an so was wie einen Pointer gedacht, den man auf die entsprechende Position im Array richtet.

Kroko1999 19. Jun 2006 11:58

Re: Position im 2D-Array
 
Zitat:

Zitat von Borti
Ich hätte da an so was wie einen Pointer gedacht, den man auf die entsprechende Position im Array richtet.

Was hindert dich daran
Delphi-Quellcode:
P := @Array[0,0];
zu nehmen und die Position entsprechend zu ändern ( zBsp: durch ausprobieren)? Wenn P: PChar kannst Du sogar den Offset addieren!

Borti 19. Jun 2006 21:27

Re: Position im 2D-Array
 
Wahrscheinlich liegt's daran, dass ich bisher nie mit Pointern gearbeitet habe. Daher muss ich mich hier entschuldigen.

Was mach ich, wenn ich einen Zeiger auf eine Position errichtet habe, ich aber auch noch die nächste höhere position auslesen will? Kann ich dann zum Zeiger einfach was dazu addieren?
Code:
var
  a:array[1..2] of array[1..2] of real;
  P:^real;
  Ergebnis1,Ergebnis2:real;
begin
  a[1][1]:=50.1;
  a[1][2]:=50.2;
  a[2][1]:=50.3;
  a[2][2]:=50.4;
  P:=@a[2][1];
  Ergebnis1:=P^;
  Ergenbnis2:=?????
end;
Gruß,
Pollux

Kroko1999 20. Jun 2006 09:17

Re: Position im 2D-Array
 
(a) Tipp: beginne die Indize bei 0, spart viel Ärger bei dynamischen Array's
(b)
Delphi-Quellcode:
type
  TMyArray= array[0..1,0..1] of real;
  PReal = ^Real;
var
  A: TMyArray;
  Pr: ^real;
  I: Integer;
begin
  A[0,0]:=50.1;
  A[0,1]:=50.2;
  A[1,0]:=50.3;
  A[1,1]:=50.4;
  Pr := @A[0,0];
  for I := 0 to 3 do
  begin
    Memo1.Lines.Add (FloatToStr(Pr^));
    Inc (Pr);
  end;

end;
(c) Wozu soll dies gut sein, der Compiler macht das mit den Array's eigentlich recht effektiv?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 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