ERLEDIGT
JA
JA
ANTWORTEN
10
10
ZUGRIFFE
661
661
EMPFEHLEN
-
14.03.08 13:37 #1
- 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
-
15.03.08 12:41 #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
-
15.03.08 15:09 #3
- 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:
nur will ich halt, das in der einen ComboBox der erste teil der datei steht, und in der anderen der andere teil.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;
Geändert von Power-Poler (15.03.08 um 15:14 Uhr)
-
15.03.08 17:40 #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
-
15.03.08 20:05 #5
- Registriert seit
- Aug 2007
- Beiträge
- 20
Ich habe jetzt den lSearchRecord mit:
Einem String zugewisen, jetzt habe ich das so weitergeschreiben:Code delphi:1
Dateiname := lSearchRecord.Name;
Doch beim Kompiliren herhalte ich immer diese Fehlermeldung:Code delphi:1
Split(Dateiname ,false,false);
[Error] Unit2.pas(78): Incompatible types: 'Char' and 'Boolean'
Was habe ich Falsch gemacht?
Zeile 78 ist die zeile mit dem der Split Funktion.
-
15.03.08 20:09 #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
-
15.03.08 20:19 #7
- 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?
-
15.03.08 21:25 #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
-
16.03.08 09:26 #9
- Registriert seit
- Aug 2007
- Beiträge
- 20
In google kann ich auch nichts finden, wie ich jetzt an die einzelen werte heran komme.
-
16.03.08 12:11 #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
-
16.03.08 13:44 #11
- 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
-
Von Teil1 bis Teil2 bestimmten Teil einer Datei lesen und weiter ...
Von -GS-Master im Forum PHPAntworten: 2Letzter Beitrag: 18.02.07, 10:57 -
Nicht nur Teil, sondern Gesamten Inhalt von Textdatei in Array lesen
Von -GS-Master im Forum PHPAntworten: 2Letzter Beitrag: 02.08.06, 15:51 -
Aus .txt lesen und EINEN als einen String ausgeben
Von Disap im Forum PHPAntworten: 5Letzter Beitrag: 02.08.05, 17:07 -
CSS nur für einen Teil anwenden
Von inspire im Forum CSSAntworten: 3Letzter Beitrag: 24.10.03, 13:43 -
Teil des Datums aus MySQL Spalte lesen
Von Chernoby im Forum PHPAntworten: 9Letzter Beitrag: 20.12.02, 16:26





Zitieren
Login





