Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi problem mit 'Array' und 'daynamic array' (https://www.delphipraxis.net/147131-problem-mit-array-und-daynamic-array.html)

gangs-taas 2. Feb 2010 10:58


problem mit 'Array' und 'daynamic array'
 
hey,
ich möchte in einem Array die Elemente Sortieren und da hab ich das hier für geschrieben :

Delphi-Quellcode:
function Fu_Ar_Termine_Sortieren(var StrArray : Array of String) : boolean;
    var
      Boo_Var : boolean ;
      Zwi_Array : Array of String ;
      i : integer ;
      y : integer ;
    begin
      Boo_Var := True ;
      Zwi_Array := StrArray; // <= hier Fehler
      for i := 1 to High(Zwi_Array) - 1  do
      begin
        for y := 1 to PosEx('>',Zwi_Array[i],(Pos('>',Zwi_Array[i]))+1) do
        begin
          If Zwi_Array[i][y] > Zwi_Array[i-1][y] Then
          begin
            ArrayPlätzeTauschen(Zwi_Array,i,i+1);
            boo_Var := false ;
            break;
          end;
        end;
      end;
      if not Boo_Var = True then
      begin
        Fu_Ar_Termine_Sortieren(Zwi_array);
      end;
      StrArray := Zwi_Array; // <= hier Fehler
    end;
Aber ich habe ein Problem nämlich, dass ich die Fehlermeldung bekomme :
[Pascal Fehler] U_normale_Termine.pas(172): E2010 Inkompatible Typen: 'dynamic array' und 'Array'

ich verstehe aber (schon wieder mal ) nicht woran es liegt. Es sind doch beides dynamic Array's oder nicht ?

DeddyH 2. Feb 2010 11:02

Re: problem mit 'Array' und 'daynamic array'
 
Typisiere das Array einmal, dann sollte es funktionieren.
Delphi-Quellcode:
type TStrArray = array of string;

function Fu_Ar_Termine_Sortieren(var StrArray : TStrArray) : boolean;
    var
      Boo_Var : boolean ;
      Zwi_Array : TStrArray ;
      i : integer ;
      y : integer ;
    begin
      Boo_Var := True ;
      Zwi_Array := StrArray; // <= hier Fehler
      for i := 1 to High(Zwi_Array) - 1  do
      begin
        for y := 1 to PosEx('>',Zwi_Array[i],(Pos('>',Zwi_Array[i]))+1) do
        begin
          If Zwi_Array[i][y] > Zwi_Array[i-1][y] Then
          begin
            ArrayPlätzeTauschen(Zwi_Array,i,i+1);
            boo_Var := false ;
            break;
          end;
        end;
      end;
      if not Boo_Var{ = True *pfui*} then
      begin
        Fu_Ar_Termine_Sortieren(Zwi_array);
      end;
      StrArray := Zwi_Array; // <= hier Fehler
    end;

gangs-taas 2. Feb 2010 11:07

Re: problem mit 'Array' und 'daynamic array'
 
danke tu ich :)
hätte ich jetzt auch drauf kommen könn
den fehler hab ich schon oft hier gefragt und erkenne immer noch nicht, dass es daran liegt -.-

danke :)

gammatester 2. Feb 2010 11:12

Re: problem mit 'Array' und 'daynamic array'
 
Zitat:

Zitat von gangs-taas
Aber ich habe ein Problem nämlich, dass ich die Fehlermeldung bekomme :
[Pascal Fehler] U_normale_Termine.pas(172): E2010 Inkompatible Typen: 'dynamic array' und 'Array'

ich verstehe aber (schon wieder mal ) nicht woran es liegt. Es sind doch beides dynamic Array's oder nicht ?

Nein, der StrArray ist kein dynamische Array sondern ein Open-array Parameter (siehe Onlinehilfe) und Zwi_Array ein dynamisches Array. Eine Lösung hat schon DeddyH beschrieben.

gangs-taas 2. Feb 2010 11:20

Re: problem mit 'Array' und 'daynamic array'
 
jap
danke :)

ps. ihr wisst nicht zufällig woran es liegt, dass der algorithmus trotzdem nicht funktioniert ?
er tauscht jetzt wahlos so lange elemente bis ich einen stacküberlauf bekomme ... -.-

Spezi 2. Feb 2010 11:24

Re: problem mit 'Array' und 'daynamic array'
 
Kann es evtl daran liegen, dass du Referenzen erzeugst?
Probier mal:
Delphi-Quellcode:
Zwi_Array:=copy(StrArray);
:wink:

gangs-taas 2. Feb 2010 11:28

Re: problem mit 'Array' und 'daynamic array'
 
ne daran liegt es jetzt nicht mehr
also das mit den arrays funktioniert jetzt
nur irg. muss in der logik des algorithmus's noch nen fehler sein..
er tauscht nämlich einfach alle möglichen elemente miteinander und nicht nur die die auch getauscht werden müssen...
Weiß jemand woran es liegt ? wo der Fehler in der Idee ist ?

gangs-taas 6. Feb 2010 22:55

Re: problem mit 'Array' und 'daynamic array'
 
*Push*

alzaimar 7. Feb 2010 06:40

Re: problem mit 'Array' und 'daynamic array'
 
Überleg dir doch mal, wie Du zwei Zeilen vergleichst.


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