tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
661
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Power-Poler Power-Poler ist offline Mitglied
    Registriert seit
    Aug 2007
    Beiträge
    20
    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
     

  2. #2
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Hallo,

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

    Grüße, D.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  3. #3
    Power-Poler Power-Poler ist offline Mitglied
    Registriert seit
    Aug 2007
    Beiträge
    20
    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 delphi:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
          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.
    Geändert von Power-Poler (15.03.08 um 15:14 Uhr)
     

  4. #4
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    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.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  5. #5
    Power-Poler Power-Poler ist offline Mitglied
    Registriert seit
    Aug 2007
    Beiträge
    20
    Ich habe jetzt den lSearchRecord mit:
    Code delphi:
    1
    
    Dateiname := lSearchRecord.Name;
    Einem String zugewisen, jetzt habe ich das so weitergeschreiben:
    Code delphi:
    1
    
    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.
     

  6. #6
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Hi,

    wenn du die Split-Funktion so übernommen hast, dann ist sie folgendermaßen definiert:
    Code delphi:
    1
    
    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.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  7. #7
    Power-Poler Power-Poler ist offline Mitglied
    Registriert seit
    Aug 2007
    Beiträge
    20
    Kompiliren tut er jetzt wider, habe es jetzt so:
    Code delphi:
    1
    
    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?
     

  8. #8
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Hi,

    schau mal hier: http://www.google.de/search?hl=de&q=...nG=Suche&meta=

    Solche Dinge sind ja allgemein sehr gut dokumentiert.

    Grüße, D.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  9. #9
    Power-Poler Power-Poler ist offline Mitglied
    Registriert seit
    Aug 2007
    Beiträge
    20
    In google kann ich auch nichts finden, wie ich jetzt an die einzelen werte heran komme.
     

  10. #10
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Hallo,

    auf der ersten Seite der Google-Ergebnisse steht (jedenfalls bei mir) diese Seite mit Beispielen: http://www.chami.com/tips/delphi/010497D.html

    Grüße, D.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  11. #11
    Power-Poler Power-Poler ist offline Mitglied
    Registriert seit
    Aug 2007
    Beiträge
    20
    Habe jetzt eine andere Methode gefunden, ist zwar über 25 ecken, aber irgenwie logischer, finde ich.
    Für alle die es interesiert:
    Code delphi:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    function PosEx(const Substr: string; const S: string; Offset: Integer): Integer;
    begin
      if Offset <= 0 then Result := 0 else
        Result := Pos(Substr, Copy(S, Offset, Length(S)));
     
      if Result <> 0 then
        Result := Result + Offset - 1;
    end;
     
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
      lDir: String;
      lSearchRecord: TSearchRec;
      Dateiname : String;
      Pos1 : Integer;
      Test : String;
      Pos2 : Integer;
      Test2 : String;
      Pos3 : integer;
    begin
    ComboBox1.Clear;
    ComboBox2.Clear;
    lDir := IncludeTrailingPathDelimiter(ExtractFilePath('X:\'));
    if FindFirst(lDir + '*.ini', faAnyFile, lSearchRecord) = 0 then
    begin
        repeat
          if (lSearchRecord.Attr <> faDirectory) then
            Dateiname := lSearchRecord.Name;
            Pos1 := Pos('.', lSearchRecord.Name);
            Pos2 := PosEx('.', lSearchRecord.Name, Pos1 + 1);
            Test := copy(Dateiname, 1,Pos1 - 1);
            Pos3 := Pos2 - Pos1 -1;
            Test2 := copy(Dateiname, Pos1 + 1,Pos3);
            ComboBox1.Items.Add(Test);
            ComboBox2.Items.Add(Test2);
        until FindNext(lSearchRecord) <> 0;
    FindClose(lSearchRecord);

    Nochmals danke, für deine Hilfe, aber mit der Split funktion habe ich es irgenwie nicht auf die Reihe bekommen.
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 18.02.07, 10:57
  2. Antworten: 2
    Letzter Beitrag: 02.08.06, 15:51
  3. Antworten: 5
    Letzter Beitrag: 02.08.05, 17:07
  4. CSS nur für einen Teil anwenden
    Von inspire im Forum CSS
    Antworten: 3
    Letzter Beitrag: 24.10.03, 13:43
  5. Teil des Datums aus MySQL Spalte lesen
    Von Chernoby im Forum PHP
    Antworten: 9
    Letzter Beitrag: 20.12.02, 16:26