Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Stringlist in Array übertragen (https://www.delphipraxis.net/11953-stringlist-array-uebertragen.html)

Stanlay Hanks 17. Nov 2003 16:11


Stringlist in Array übertragen
 
Hallo zusammen! Wiedermal hab ich ein Problem, dass für viele wahrscheinlich ganz leicht zu lösen sein dürfte, aber ich brings mal wieder nicht auf die Reihe. Hab auch schon in der DP gesucht... :(

Also. Ich möchte gerne ein Array of TColor haben. Das Problem ist nur, ich hab die Daten, die da rein sollen, in einer Stringlist. Hintergrund ist Folgender: Ich möchte eine Komponente ableiten, die Farbverläufe mit unbegrenzt vielen Farben unterstützen soll und habe dazu eine Funktion, die eben ein Array of TColor benötigt. Da es mir zuviel Arbeit ist, extra einen Eigenschaftseditor für eine Farbenauswahl zu machen, möchte ich eben, dass die Farben Zeile für Zeile in eine Stringlist geschrieben werden und zur Laufzeit in ein Array of TColor kommen...Aber wie kann ich so eine Stringlist in ein Array übertragen?

Danke schon mal, man liest sich, Stanlay :hi:

Baal 17. Nov 2003 16:19

Re: Stringlist in Array übertragen
 
hi stan,

eigentlich kann man doch nen string in nen integer verwandeln und nen
integer in nen farbwert, oder?

bye

Stanlay Hanks 17. Nov 2003 16:19

Re: Stringlist in Array übertragen
 
:wall: Das ist mir jetzt peinlich...Grade hab ich in der OH nachgesehen...und da sticht mir ins Auge:

Zitat:

Die Array-Eigenschaft Strings enthält die Strings in der Liste, deren Indizierung bei 0 beginnt. Weil Strings die Standardeigenschaft für Stringlisten ist, können Sie beim Zugriff auf die Liste den Bezeichner Strings weglassen. Damit ist

StringList1.Strings[0] := 'Dies ist der erste String.';

ist äquivalent zu

StringList1[0] := 'Dies ist der erste String.';
:wall: Dann is das ganze natärlich kein Problem mehr...

Tut mir leid, wegen dem überflüssigen Thread. :oops:

Man liest sich, Stanlay :oops:

himitsu 17. Nov 2003 16:42

Re: Stringlist in Array übertragen
 
StringList zu Array_of_Color:
Delphi-Quellcode:
Var I: Integer;
  Farben: TStringList;
  FarbenA: Array of TColor

Farben := ('clBlack', 'clRed', '$4D56F4')

SetLength(FarbenA, Farben.Count);
For I := 0 to Farben.Count - 1 do
  FarbenA[I] := StringToColor(Farben[I]);

FarbenA := ($000000, $0000FF, $4D56F4)

Array_of_Color zu StringList
Delphi-Quellcode:
Var I: Integer;
  Farben: TStringList;
  FarbenA: Array of TColor

FarbenA := ($000000, $0000FF, $4D56F4)

SetLength(Farben, FarbenA.Count);
For I := 0 to Farben.Count - 1 do
  ColorToIdent(FarbenA[I], Farben[I]);

Farben := ('clBlack', 'clRed', '$4D56F4')

Baal 17. Nov 2003 16:44

Re: Stringlist in Array übertragen
 
kein thread ist umsonst außer wenn er sich wiederholt :mrgreen:

Stanlay Hanks 17. Nov 2003 16:59

Re: Stringlist in Array übertragen
 
Genau so hatte ich das gedacht :thumb: Mir was nur gerade nicht mehr bewusst, dass es ja noch die Strings Eingenhschaft gibt...peinlich, peinlich :oops:

Danke auf jeden Fall, Man liest sich, Stanlay :hi:

Stanlay Hanks 18. Nov 2003 16:31

Re: Stringlist in Array übertragen
 
:wall: Hi! ich bins nochmal...steh mal wieder auf dem schlauch.

Delphi-Quellcode:
procedure TExtpansionPanel.FillArray(ClrArr: array of TColor;
  StrLst: TStrings);
var ni : Integer;
begin
  SetLength(ClrArr,StrLst.Count);

  For ni := 0 to StrLst.Count -1 do
    ClrArr[ni] := StringToColor(StrLst[ni]);

end;
Hab diese Prozedur erstellt, weil ich mehrere Arrays mit Farben füllen muss...
Aber jetzt sagt er mir bei SetLength : inkompatible Typen...Versteh ich nicht. Ich hab doch im ProzedurKopf ClrArr als Array of TColor deklariert und StrLst.Count ist doch ein Integer...
Wäre toll, wenn mir wer helfen könnte (Bin so kurz vor dem Ziel...:cry:)

Man liest sich, Stanlay :hi:

himitsu 18. Nov 2003 17:03

Re: Stringlist in Array übertragen
 
Delphi-Quellcode:
Type TClrArr = Array of TColor;

Procedure TForm1.FillArray(StrLst: TStringList; Var ClrArr: TClrArr);
  Var ni: Integer;

  Begin
    SetLength(ClrArr, StrLst.Count);
    For ni := 0 to StrLst.Count - 1 do
      ClrArr[ni] := StringToColor(StrLst[ni]);
  End;

Procedure TForm1.FormCreate(Sender: TObject);
  Var ClrArr: TClrArr;
    StrLst: TStringList;

  Begin
    StrLst := TStringList.Create;
    StrLst.Add('clRed');
    StrLst.Add('clBlue');

    FillArray(StrLst, ClrArr);

    Label1.Color := ClrArr[0];
    Label1.Font.Color := ClrArr[1];
  End;
Hab mal einiges berichtigt/geändert:
  • Prozedur(Input, Output);
  • ClrArr als Var-Paramerter deklariert (siehe OH)
  • TStrings zu TStringList
  • "Array of TColor" als globalen Typ deklariert

Stanlay Hanks 18. Nov 2003 17:12

Re: Stringlist in Array übertragen
 
Hi! Vielen Danke für die Antwort! Wie ich sehe, kann mal wohl kein Array direkt in einer Prozedur deklarieren...Danke für die Aufklährung!

Aber nun hätte ich noch ne Frage: Wo genau müsste ich denn die Type Deklaration hinschreiben?

himitsu 18. Nov 2003 18:16

Re: Stringlist in Array übertragen
 
Idealerweis dort wo du auch deine Komponente deklarierst.

Add:
Bei einer solchen komplexen Typendaklaration (Array of ... / Record...) in einer Prozedur-/Funktionsdaklaration meckert Delphi oft, das die Typendaklarationen nicht identisch sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:25 Uhr.
Seite 1 von 2  1 2      

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