Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ListBox und array (https://www.delphipraxis.net/159098-listbox-und-array.html)

EWeiss 14. Mär 2011 16:04

AW: ListBox und array
 
Zitat:

Zitat von alfold (Beitrag 1088401)
Zitat:

Zitat von EWeiss (Beitrag 1088398)
Ich kann ja die Textdatei komplett einlesen und anschließend über den Delemiter Komma parsen
Ich möchte es mir aber einfach machen und das parsen direkt beim einlesen der Textdatei erledigen.

gruss

Und was hindert dich daran das mit einer TStringList zu machen, als den umständlichen Weg eine Datei zu Parsen? Geschweige das Format zu erstellen.

Hiermal ein kleines Beispiel:
G:\Musik\PLAYER1\02 Begin.wav=02 Begin;10;0,00;0,00;0;0;0;0;0;1
G:\Musik\PLAYER1\rauschen.wav=rauschen;10;0,00;0,0 0;0;0;0;0;0;1
G:\Musik\PLAYER1\10 Geier_ S21.wav=10 Geier_ S21;10;0,00;0,00;0;0;0;0;0;1

alfold

sorry das sagt mir nichts.
Ich glaube ich bin zu blöd mich richtig auszudrücken.

Oder mich versteht keiner.

gruss

alfold 14. Mär 2011 16:10

AW: ListBox und array
 
Ein TStringList ist fast Temporär, ob du sie speicherst oder nur zum einlesen deiner DatenListe nimmst und danach verwirfst bleibt dir überlassen!

alfold

juergen 14. Mär 2011 16:10

AW: ListBox und array
 
Hallo,

ich habe es nicht genau im Kopf, aber die TStringList hat von Hause aus schon alles nötige für Delemiter implementiert. Somit brauchst du nichts zu parsen, weil es die TStringList für dich tut. :-D

alfold 14. Mär 2011 16:14

AW: ListBox und array
 
Zitat:

Zitat von juergen (Beitrag 1088405)
... weil es die TStringList für dich tut. :-D

Nicht ganz, bischen muss man noch selber machen :wink:

alfold

EWeiss 14. Mär 2011 16:17

AW: ListBox und array
 
Zitat:

Zitat von juergen (Beitrag 1088405)
Hallo,

ich habe es nicht genau im Kopf, aber die TStringList hat von Hause aus schon alles nötige für Delemiter implementiert. Somit brauchst du nichts zu parsen, weil es die TStringList für dich tut. :-D

Dann wäre das doch ideal nur wie geht das ...
Habe mal ein Bild angehängt ohne die TextDatei geparst zu haben.

Ich lade die Liste so ein.
Delphi-Quellcode:
            if InstrumentList.ListCount(SKAERO_GetMainItem(ID_INSTRUMENTLIST)) = 0 then
            begin
              InstList := TStringList.Create;
              try
                InstList.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Config\Instrument.txt');
                for IntI := 0 to InstList.Count -1 do
                  InstrumentList.ListAdd(SKAERO_GetMainItem(ID_INSTRUMENTLIST),InstList.Strings[IntI]);
              finally
                InstList.Free;
              end;
            end;

Dann sind die einzelnen zeilen aber nicht geparst innerhalb der TStringList
Ich kann Arrays erstellen und parsen kein problem ich möchte es nur einfach halten von der bedienung her.
Und ein Listview macht das für mich in dem ich einfach die Subitems addiere.

Die InstList hat KEINE Subitems darum geht es mir.

gruss

juergen 14. Mär 2011 16:31

AW: ListBox und array
 
Hallo Emil,
Zitat:

Zitat von EWeiss
Dann wäre das doch ideal nur wie geht das

Bin mir nicht sicher ob es genau so richtig ist, aber in etwa so:
Delphi-Quellcode:
var sl : TStringlist;
begin
  sl := TStringlist.Create;
  try
    sl.Delimiter := ';';
    sl.DelimitedText := 'Hallo1;"Test1 Test2 Test3";Hallo2;Hallo3';
    //sl[0] => Hallo1
    //sl[1] => Test1 Test2 Test3
    //sl[2] => Hallo2
    //sl[3] => Hallo3
  finally
    FreeAndNil(sl);
  end;
end;

EWeiss 14. Mär 2011 16:36

AW: ListBox und array
 
Zitat:

Zitat von juergen (Beitrag 1088411)
Hallo Emil,
Zitat:

Zitat von EWeiss
Dann wäre das doch ideal nur wie geht das

Bin mir nicht sicher ob es genau so richtig ist, aber in etwa so:
Delphi-Quellcode:
var sl : TStringlist;
begin
  sl := TStringlist.Create;
  try
    sl.Delimiter := ';';
    sl.DelimitedText := 'Hallo1;"Test1 Test2 Test3";Hallo2;Hallo3';
    //sl[0] => Hallo1
    //sl[1] => Test1 Test2 Test3
    //sl[2] => Hallo2
    //sl[3] => Hallo3
  finally
    FreeAndNil(sl);
  end;
end;

Ja so habe ich mir das gedacht ...
Und dann kann ich den Index 1,2,3 direkt ansprechen ?
Ohne im nachhinein nochmal zu parsen ?

Werde es mal versuchen.

Danke!

gruss

alfold 14. Mär 2011 16:39

AW: ListBox und array
 
Mal ehrlich, alles was nun mal in einem einfachen Format einer TXT Datei ist, muss man halt Parsen wenn man es in einem bestimmten Format haben will!
Du hast aber noch die Möglichkeit mit ini zu arbeiten. Aber auch dort muss man beim einlesen wieder 'parsen' dorthin wo man es will oder wie es aussehen soll!
Egal was Du nun machst, um es in ein richtigen Format zu erhalten musst Du es 'parsen'. Auch wenn Du es schön speicherst das einlesen bleibt immer als 'parsen'.

Selbst ne DB ist beim Speichern/einlesen nichts anderes.

Ne einfach Möglichkeit gibt es nun mal nicht dafür!
siehe mein Beispiel.
alfold

shmia 14. Mär 2011 16:40

AW: ListBox und array
 
Du willst einfach nicht in Objekten bzw. Klassen denken. :(
(Mein letzter Versuch)
Die Klasse TStrings bzw. TStringList bringt schon alles mit, um eine Liste von Namen zusammen mit weiteren Daten (=Objekte) zu verwalten.
Bitte kein Array verwenden.

Es gibt 2 Klassen:
1.) eine ganz einfache Klasse, die die Daten aufnimmt.
Pro Wert gibt es ein Property oder Member-Variable.
Delphi-Quellcode:
TInstrument = class(TObject)
public
  Name : string;
  ProgrammNo: integer;
  SchlagInstr: Boolean;
  procedure LoadFromCSV(const line:string); // befüllt die Werte aus einem CSV-String
end;
Es ist hier nicht einmal notwendig, echte Properties einzuführen, da die Klasse "intern" verwendet wird und nicht unbedingt diesen Schutz benötigt.
2.) eine Ableitung von TStringList
Delphi-Quellcode:
TInstrumentList = class(TStringList)
public
  procedure AddInstrument(instr : TInstrument);
  procedure FreeInstruments;

  procedure LoadInstrumentsFromFile(const filename:string);
end;

procedure TInstrumentList.AddInstrument(instr : TInstrument);
begin
  AddObject(instr.Name, instr);
end;

procedure TInstrumentList.FreeInstruments;
var i : integer;
begin
  for i := Count-1 downto 0 do
  begin
    Objects[i].Free;
    delete(i);
  end;
end;

alfold 14. Mär 2011 16:46

AW: ListBox und array
 
Doch würde er schon, nur den Aufwand dahin würde er gerne überspringen.
So nach ...ne txt datei einlesen sooo viel Aufwand:wink:

alfold


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz