![]() |
Delphi-Version: 10 Seattle
CheckListBox Items separieren
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:
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.
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; |
AW: CheckListBox Items separieren
Wie wäre es mit
Delphi-Quellcode:
CurrentXML.LoadFromFile(CheckListBox1.Items[i]);
anstelle von
Delphi-Quellcode:
CurrentXML.LoadFromFile(GefundeneDateien); // Dateinamen einfügen
|
AW: CheckListBox Items separieren
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 :stupid: Zitat:
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) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr. |
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