Nur einen Teil des Names lesen

Power-Poler

Mitglied
Hi, ich bins wider, habe mich seit langem mal wider durschgerungen mein Progrämmschen weiterzuschreiben :) .
Jetzt habe ich auch schon wider ein Problem:
Und zwar, habe ich eine ini Datei, die Beispielsweise wie folgt heist:
MartinMusterman.00011233.ini
Jetzt hätte ich gerne, das ein Teil davon in einer comboBox eingezeigt wird, und der andere in einer Zweiten.
Also in der Ersten:
MartinMusterman
Und in der Zweiten:
00011233
Wie kann ich das umsetzten?

Danke im Voraus
MfG
Power-Poler
 
Hallo,

du musst den Dateinamen als String erstmal aufteilen (siehe hier). Danach kannst du die einzelnen Teile des Strings weiter verwenden.

Grüße, D.
 
Erstmal danke, für deine hilfe, aber ich steige da irgenwie nicht dahinter, wie das jetzt gehen soll, und wie ich dan auf die einzelen Werte wider zugreifen kann.
Es ist für diesen code:
Code:
      procedure TIrgendeineKlasse.GetAvailableFiles(pComboBox: TComboBox);
      var
        lDir: String;                   // Startverzeichnis für die Filesuche
        lSearchRecord: TSearchRec;      // zum Suchen selbst
      begin
        // Wenn ich schon nach den verfügbaren Dateien suche, dann will ich aber
        // keine doppelten Einträge von vorherigen Dateisuchen
        pCombobox.Clear;
       
        // Ich suche nur im gleichen Verzeichnis, in dem auch die EXE meines
        // Programms läuft
        lDir := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
       
        // Existiert überhaupt irgendeine Datei im gewünschten Format?
        // (hier eine EXE-Datei).
        if FindFirst(lDir + '*.exe', faAnyFile, lSearchRecord) = 0 then
        begin
          repeat
            if (lSearchRecord.Attr <> faDirectory) then
              pComboBox.Items.Add(lSearchRecord.Name);
          until FindNext(lSearchRecord) <> 0;
       
          // Suche abschliessen
          FindClose(lSearchRecord);
        end;
      end;
nur will ich halt, das in der einen ComboBox der erste teil der datei steht, und in der anderen der andere teil.
 
Zuletzt bearbeitet:
Hallo,

ich kann den Code gerade nicht ausprobieren, aber ich gehe mal davon aus, dass der zumindest so weit funktioniert, als dass du damit alle Dateien aus einem Verzeichnis in eine Combobox bekommst. In Zeile 20 fügst du in die Combobox den jeweils gefundenen Dateinamen ein - stattdessen müsstest du diesen Dateinamen (als String) erstmal an die Split-Funktion übergeben. Da bekommst du ein TStringList-Objekt zurück, das die Teile des Dateinamens enthält.

Damit kannst du dann diese Teile auf mehrere Comboboxen verteilen, indem du innerhalb der Schleife jede der Comboboxen mit Items.Add ansprichst und den jeweils richtigen Teil als Parameter übergibst.

Wenn du nur die INI-Dateien aus dem Verzeichnis haben willst, solltest du in Zeile 16 noch den Filter auf *.ini umstellen.

Grüße, D.
 
Ich habe jetzt den lSearchRecord mit:
Code:
Dateiname := lSearchRecord.Name;
Einem String zugewisen, jetzt habe ich das so weitergeschreiben:
Code:
Split(Dateiname ,false,false);
Doch beim Kompiliren herhalte ich immer diese Fehlermeldung:
[Error] Unit2.pas(78): Incompatible types: 'Char' and 'Boolean'
Was habe ich Falsch gemacht?
Zeile 78 ist die zeile mit dem der Split Funktion.
 
Hi,

wenn du die Split-Funktion so übernommen hast, dann ist sie folgendermaßen definiert:
Code:
function Split(const fText: String; const fSep: Char; fTrim: Boolean=false; fQuotes: Boolean=false):TStringList;

Dementsprechend musst du sie auch aufrufen. Der zweite Parameter ist vom Typ Char, da muss das Trennzeichen (in deinem Fall der Punkt) rein.

Grüße, D.
 
Kompiliren tut er jetzt wider, habe es jetzt so:
Code:
Split(Dateiname ,'.',false,false);

Doch wie komm ich jetzt an die TStringList ran, also an die 3 einzelwerte, die da jetzt drin stehn müsten, also "MartinMusterman", "00011233", und halt die endung ini, die ich zwar für diesen fall nicht brauch, aber mit welchem code würde ich an einen von den 3 werten rankommen?
 

Neue Beiträge

Zurück