Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Array of Integer und crash (https://www.delphipraxis.net/192085-array-integer-und-crash.html)

EWeiss 19. Mär 2017 07:37

Array of Integer und crash
 
Ich hab ein Array of Integer in einer Procedure definiert.

Delphi-Quellcode:
type
  TOutFrameDelay = array of Integer;
  POutFrameDelay = ^TOutFrameDelay;
....
procedure GetGifFrameDelays(InGifImage: Cardinal; InFrameCount: UINT;
  var OutFrameDelay: TOutFrameDelay);
wenn ich nun das Array redimensioniere dann kracht es mal wieder.

Delphi-Quellcode:
SetLength(OutFrameDelay, InFrameCount - 1);


SetLength müsste so doch auch mit Integer funktionieren oder nicht?
Was läuft hier wieder schief? LOL

Bin wieder mal die ganze Nacht wach wird zeit für's Bett.. hehehehehee

gruss

haentschman 19. Mär 2017 07:44

AW: Array of Integer und crash
 
Moin...8-)

Was spricht gegen TList<Integer>. Da hast du das Pointer geschubse nicht. :wink:

EWeiss 19. Mär 2017 07:46

AW: Array of Integer und crash
 
Zitat:

Zitat von haentschman (Beitrag 1364688)
Moin...8-)

Was spricht gegen TList<Integer>. Da hast du das Pointer geschubse nicht. :wink:

Wie meinst das?
Eigentlich müsste das doch funktionieren frage mich nur warum nicht.

gruss

Uwe Raabe 19. Mär 2017 08:10

AW: Array of Integer und crash
 
Zitat:

Zitat von EWeiss (Beitrag 1364687)
procedure GetGifFrameDelays(InGifImage: Cardinal; InFrameCount: Integer;
var OutFrameDelay: TOutFrameDelay);[/DELPHI]

Liegt vielleicht daran, was dieser procedure übergeben wird?

EWeiss 19. Mär 2017 08:19

AW: Array of Integer und crash
 
Delphi-Quellcode:
var OutFrameDelay: TOutFrameDelay
Habe gelesen das man hier den var Parameter übergeben soll wenn eine Type Deklaration für das Array angelegt wurde.

Aber auch wenn ich diesen entferne kracht es.
Was anderes fällt mir da jetzt nicht ein.

Das Image ist korrekt, der FrameConter ist 14 also auch korrekt.
Übrig bleibt dann nur das OutFrameDelay.

gruss

haentschman 19. Mär 2017 08:25

AW: Array of Integer und crash
 
Zitat:

Wie meinst das?
:wink: damit wärst du schon fertig ohne die Pointer Problematik und Arrays als Parameter.

EWeiss 19. Mär 2017 08:33

AW: Array of Integer und crash
 
Zitat:

Zitat von haentschman (Beitrag 1364693)
Zitat:

Wie meinst das?
:wink: damit wärst du schon fertig ohne die Pointer Problematik und Arrays als Parameter.

Ich habe kein Problem mit dem Pointern nur mit dem Array.

Delphi-Quellcode:
procedure GetGifFrameDelays(InGifImage: Cardinal; InFrameCount: UINT;
  var OutFrameDelay: TOutFrameDelay);
Delphi-Quellcode:
procedure LoadGif;
var
  FrameCount: UINT;
  FrameDelay: TOutFrameDelay;
begin

  FrameCount := 0;

  if GetGifFrameCount(gp.GifImage, @GuidFDT, FrameCount) = S_OK then
    If (FrameCount - 1) = 0 then
    begin
      SetLength(FrameDelay, 0);
    end else
    begin
      GetGifFrameDelays(gp.GifImage, FrameCount, FrameDelay);
    end;
end;
Jetzt brat mir einer nen Storch warum geht das nicht.

grrrr... LOL

gruss

Uwe Raabe 19. Mär 2017 09:32

AW: Array of Integer und crash
 
Zitat:

Zitat von EWeiss (Beitrag 1364694)
Jetzt brat mir einer nen Storch warum geht das nicht.

Funktioniert doch! Mangels weiterer Informationen habe ich das mal auf ein Minimum runter gebrochen:

Delphi-Quellcode:
program Project219;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

type
  TOutFrameDelay = array of Integer;

procedure GetGifFrameDelays(InGifImage: Cardinal; InFrameCount: Cardinal;
  var OutFrameDelay: TOutFrameDelay);
begin
  SetLength(OutFrameDelay, InFrameCount - 1);
end;

procedure Main;
var
  FrameCount: Cardinal;
  FrameDelay: TOutFrameDelay;
begin

  FrameCount := 4;

//  if GetGifFrameCount(gp.GifImage, @GuidFDT, FrameCount) = S_OK then
    If (FrameCount - 1) = 0 then
    begin
      SetLength(FrameDelay, 0);
    end else
    begin
      GetGifFrameDelays(0, FrameCount, FrameDelay);
    end;

  Writeln('OK');
end;

begin
  try
    Main;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  Readln;
end.

p80286 19. Mär 2017 09:42

AW: Array of Integer und crash
 
Zitat:

Zitat von EWeiss (Beitrag 1364694)
Ich habe kein Problem mit dem Pointern nur mit dem Array.

Sicher?
der Pointer muß auf Myarray[0] zeigen.

(ich hab jedenfalls keine Zuweisung gesehen?)

Gruß
K-H

EWeiss 19. Mär 2017 13:54

AW: Array of Integer und crash
 
Dank euch muss mir das nochmal ansehen.
Bin jetzt wieder dabei. ;)

Delphi-Quellcode:
der Pointer muß auf Myarray[0] zeigen.
Wie ? Wenn ich das Array vorher nicht dimensionieren kann.
Es ist ja dann noch nicht mal initialisiert ohne SetLength.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:46 Uhr.
Seite 1 von 6  1 23     Letzte »    

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