AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CheckListBox Items separieren

Ein Thema von Freyr77 · begonnen am 2. Aug 2016 · letzter Beitrag vom 2. Aug 2016
Antwort Antwort
Freyr77
(Gast)

n/a Beiträge
 
#1

CheckListBox Items separieren

  Alt 2. Aug 2016, 15:50
Delphi-Version: 10 Seattle
Die hoffentlich letzte Frage zu meinem Projekt..

Ich lasse einen Ordner über TFileOpenDialog auswählen, anschließend suche ich mit "GetFilesInDirectory" nach allen .dproj's in dem gewählten Ordner und speichere Sie in meiner CheckListBox ab. Alles kein Thema, die gewünschten Dateien wurden alle korrekt eingelesen und zugeordnet.

Jetzt durchläuft meine Schleife aber eine bestimmte Prozedur für jedes einzelne .dproj und speichert dieses abschließend in einem StringGrid mit ausgelesenen Datei Informationen. Deshalb bräuchte ich jedes Item der CheckListBox einzeln als String. Sonst kann das Programm das nicht verarbeiten.

Das ganze sieht so aus:

Delphi-Quellcode:
var
  lXMLOutput: string;
  lFileVersionInfo, lFileNameInfo, lProductVersionInfo: string;
  SemikolonPos: integer;
  StringPos: integer;
  iZaehler: integer;
  GefundeneDateien: string;
  Ordnerpfad: string;
  i: integer;
begin
  fVersionInfo := nil;
  with TFileOpenDialog.Create(nil) do
    try
      Options := [fDoPickFolders];
      if Execute then
        Ordnerpfad := Filename;
    finally
      Free;
    end;

  // Rekursive Dateisuche
  GetFilesInDirectory(Ordnerpfad, '*.dproj', ListBox1.Items, True);
  GefundeneDateien := ListBox1.Items.Text;

  // CheckListBox??????
  // Dateien in CheckListBox schreiben
  CheckListBox1.Items.Text := GefundeneDateien;
  CheckListBox1.SelectAll;
  // CheckListBox ausgewählte Dateien


  for i := 0 to CheckListBox1.Items.Count - 1 do
    CheckListBox1.Checked[i];

  for iZaehler := 0 to i - 1 do

  begin
    // XML-Dokument laden
    CurrentXML := NewXMLDocument;
    CurrentXML.LoadFromFile(GefundeneDateien); // Dateinamen einfügen
    CurrentXML.Active := True;

    // XML-Dokument auslesen
    GetVersionInfo(CurrentXML.DocumentElement);
    if fVersionInfo.NodeValue <> 'then
    begin
      // Kompletter VerInfo_Keys Part
      lXMLOutput := fVersionInfo.NodeValue;

      // FileVersion Stringposition, Nummer kopieren und zuweisen
      StringPos := POS('FileVersion=', lXMLOutput);
      SemikolonPos := lXMLOutput.IndexOf(';', StringPos);
      lFileVersionInfo := lXMLOutput.Substring(StringPos + 11,
        SemikolonPos - StringPos - 11);

      // InternalName Stringposition, Substring kopieren und zuweisen
      StringPos := POS('InternalName=', lXMLOutput);
      SemikolonPos := lXMLOutput.IndexOf(';', StringPos);
      lFileNameInfo := lXMLOutput.Substring(StringPos + 12,
        SemikolonPos - StringPos - 12);

      // ProductVersion Stringposition, Substring kopieren und zuweisen
      StringPos := POS('ProductVersion=', lXMLOutput);
      SemikolonPos := lXMLOutput.IndexOf(';', StringPos);
      lProductVersionInfo := lXMLOutput.Substring(StringPos + 14,
        SemikolonPos - StringPos - 14);

      // Überschriften StringGrid
      StringGrid1.Cells[0, 0] := 'Projekt';
      StringGrid1.Cells[1, 0] := 'DateiVersion';
      StringGrid1.Cells[2, 0] := 'ProduktVersion';

      // Vierte Spalte unsichtbar
      StringGrid1.ColWidths[3] := -1;

      // Eintragungen StringGrid
      StringGrid1.Cells[0, iZaehler] := lFileNameInfo;
      StringGrid1.Cells[1, iZaehler] := lFileVersionInfo;
      StringGrid1.Cells[2, iZaehler] := lProductVersionInfo;
Ich hatte schon die Idee das ganze einzeln zu Zerpflücken und dann in Variablen zu speichern. Das ist mir aber zu umständlich, weil es viele Dateien sind.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: CheckListBox Items separieren

  Alt 2. Aug 2016, 16:26
Wie wäre es mit
CurrentXML.LoadFromFile(CheckListBox1.Items[i]);
anstelle von
CurrentXML.LoadFromFile(GefundeneDateien); // Dateinamen einfügen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: CheckListBox Items separieren

  Alt 2. Aug 2016, 16:33
Wozu soll denn die Listbox gut sein?
Ich möchte fast wetten, dass man GetFilesInDirectory auch die CheckListBox1 geben kann.
Da jemand die Dateien eh einzeln haben wollte, wäre GefundeneDateien auch bissl nutzlos.

Man mag es nicht glauben, aber genau wie ListBox1.Items ist CheckListBox1.Items ein TStrings ... also fast sowas wie eine TStringList

Zitat:
Delphi-Quellcode:
for i := 0 to CheckListBox1.Items.Count - 1 do
    CheckListBox1.Checked[i];
Was diese komische schleife (nicht) machen soll, bleibt mir auch schleierhaft.

Und die Methode GetVersionInfo würde ich auch umbennen, da sie nicht die Versioninfo gibt, sondern sie in eine "globale" Variable schreibt.
(hätte ja eher erwatet die gibt das als Result zurück)

PS: Wieso kann sich hier keiner für Einwas entscheiden? (IndexOf oder Pos)
$2B or not $2B

Geändert von himitsu ( 2. Aug 2016 um 16:36 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 Uhr.
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