Autor Beitrag
whitef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: So 27.12.15 00:44 
hi,

ich versuche grade aus einem ordner alle dateinamen aufzulisten und in ein array zu schreiben und von dort aus wieder in ein grid.

irgendwie stehe ich gerade auf dem schlauch. irgendwas funktioniert da nicht...

wäre jemand so nett und würde mal drüber schauen?

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
    searchResult : TSearchRec;
    multiArray : Array of Array [1..6of WideString;
begin
  i := 0;
  stringgrid1.RowCount := i;
  SetLength(multiArray, 2);
    if FindFirst(ExtractFilePath(paramstr(0)) + 'data\' + '*.*', faAnyFile, searchResult) = 0 then
    begin
      repeat
        if ( searchResult.Name <> '.' ) and ( searchResult.Name <> '..' ) then
        begin
          multiArray[i,1] := searchResult.Name;
          SetLength(multiArray,  high(multiArray)+1);
          i := i + 1;
        end;
      until FindNext(searchResult) <> 0;
      FindClose(searchResult);
    end;

  stringgrid1.RowCount := high(multiArray)+1;
  if i > 0 then
  begin
    for i := low(multiArray) to high(multiArray) - 1 do
    begin
      stringgrid1.Cells[0,i+1] := multiArray[i,1];
      //showmessage('m: ' + multiArray[i,1]);
    end;
  end;
end;
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: So 27.12.15 01:22 
Hallo,
wenn du dein Programm um Debugger-Modus schrittweise ausführst, siehst du, dass
ausblenden Delphi-Quelltext
1:
SetLength(multiArray,  high(multiArray)+1);					

die Grenzen des Feldes nicht erweitert. high(multiarray) gibt dir nicht die Anzahl der Elemente, sondern die Anzahl - 1 zurück, da der erste Index = 0 ist.
Mit
ausblenden Delphi-Quelltext
1:
setLength(multiArray, high(multiarray)+2);					

funktioniert es.

Beste Grüße
Mathematiker

PS: Das war mein 2000.Beitrag. :dance2:

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 28.12.15 01:59 
Oder du verwendest um die aktuelle Länge festzustellen Length(), damit macht das dann auch semantisch Sinn.


user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
PS: Das war mein 2000.Beitrag. :dance2:
Glückwunsch :beer: :)

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
whitef Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: Sa 09.01.16 11:05 
danke...
eigentlich hatte ich das auch schon versucht... aber vlt an anderer stelle wieder was vertauscht :D