Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#1

Array über Schleife ausfüllen

  Alt 11. Feb 2021, 15:01
Delphi-Version: 10.1 Berlin
Hallo...

Ich möchte ein dynamisches Array über eine Schleife füllen. Für die Demo wird die Schleifenvariable als String in den Parameter geschrieben.
Delphi-Quellcode:
function TGhostscript.PDFMerge(FileName: string; FileList: TStrings): Boolean;
var
  Parameters: array of PAnsiChar;
  InitError: Integer;

  procedure CreateMergeFiles;
  var
    I: Integer;
  begin
    for I := 0 to FileList.Count - 1 do
    begin
      Parameters[I + 6] := PAnsiChar(IntToStr(I));//PAnsiChar(AnsiString(FileList[I]));
    end;
  end;

begin
  if FDLLHandle = 0 then
  begin
    if not LoadDLL(FDLLPath) then
    begin
      Result := False;
      Exit;
    end;
  end;
  try
    SetLength(Parameters, FileList.Count + 6);

    Parameters[0] := '';
    Parameters[1] := '-dNOPAUSE';
    Parameters[2] := '-dBATCH';
    Parameters[3] := '-dPDFSETTINGS=/ebook';
    Parameters[4] := '-sDEVICE=pdfwrite';
    Parameters[5] := PAnsiChar(AnsiString('-sOutputFile=' + FileName));

// Parameters[6] := PAnsiChar(AnsiString(FileList[0]));
// Parameters[7] := PAnsiChar(AnsiString(FileList[1]));
// Parameters[8] := PAnsiChar(AnsiString(FileList[2]));
// Parameters[9] := PAnsiChar(AnsiString(FileList[3]));

    CreateMergeFiles;
Ergebnis nach jedem Schleifendurchlauf:
1:
[6] = 0
[7] = nil
[8] = nil
[9] = nil
I = 0

2:
[6] = 1
[7] = 1
[8] = nil
[9] = nil
I = 1

3:
[6] = 2
[7] = 2
[8] = 2
[9] = nil
I = 2

3:
[6] = 3
[7] = 3
[8] = 3
[9] = 3
I = 3



Wenn ich die Parameter hard codiere (auskommentierter Text):
[6] = 0
[7] = 1
[8] = 2
[9] = 3

Erleuchtet mich mal. Ist normalerweise das 1*1 ... Arrays.

Was ich schon probiert habe (ohne Erfolg):
* Index des Parameters in der Schleife extern berechnet
* Mit jedem Schleifendurchlauf Array um 1 vergrößert
* Schleife rückwärts
* Parameter als private Variable
* Übergabe als var Parameter an CreateMergeFiles
* Optimierung EIN/AUS
...

PS: Einen Delphi Entwickler habe ich schon geschockt... Er konnte es auch nicht verstehen!

Geändert von haentschman (11. Feb 2021 um 15:41 Uhr)
  Mit Zitat antworten Zitat