Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Dateinamen aus ComboBox.Items erstellen (https://www.delphipraxis.net/89109-dateinamen-aus-combobox-items-erstellen.html)

moperswings 26. Mär 2007 14:34


Dateinamen aus ComboBox.Items erstellen
 
Hallo,

ich habe für mein Problem eine Lösung, jedoch glaube ich, dass es eine bessere gibt und Ihr mir praktikablere Vorschläge liefern könnt. Ich habe 2 ComboBox, aus deren Items ich einen Dateinamen erstellen möchte. Mein Code:
Delphi-Quellcode:
var
     a,b,c,d,: string;
     fs: textfile;
     name1, name2, name3, dateiname: string;
begin
     case ComboBox1.ItemIndex of
     0: begin a := Combobox1.Text; end;
     1: begin b := ComboBox1.Text; end;
     end;

     case ComboBox2.ItemIndex of
     0: begin c := combobox2.Text; end;
     1: begin d := combobox2.Text; end;
     end;
   
     name1 := a + b;
     name2 := c + d;
     name3 := '.txt';
     dateiname := name1 + name2 + name3;
     Assignfile(fs, dateiname);
     ...
Bei ganz vielen ComboBoxen und Items wird diese Lösung unpraktisch!
Hoffe, Ihr könnt mir helfen und habt einen besseren Vorschlag!

Viele Grüsse, moperswings

himitsu 26. Mär 2007 14:48

Re: Dateinamen aus ComboBox.Items erstellen
 
Also, wenn ich jetzt davon ausgeh, das die ComboBoxen nur 2, oder mehr Einträge haben, dann komm ich auf dieses:

Strings werden ja mit '' initialisiert
Delphi-Quellcode:
var
  a,b,c,d,: string;
  fs: textfile;
  name1, name2, name3, dateiname: string;
begin
  a := '';
  b := '';
  c := '';
  d := '';

  case ComboBox1.ItemIndex of
    0: begin a := Combobox1.Text; end;
    1: begin b := ComboBox1.Text; end;
  end;

  case ComboBox2.ItemIndex of
    0: begin c := combobox2.Text; end;
    1: begin d := combobox2.Text; end;
  end;
   
  name1 := a + b;
  name2 := c + d;
  name3 := '.txt';
  dateiname := name1 + name2 + name3;
  Assignfile(fs, dateiname);
gekürzt komm ich auf dieses
Delphi-Quellcode:
var
  a,b,c,d,: string;
  fs: textfile;
  name1, name2, name3, dateiname: string;
begin
  if ComboBox1.ItemIndex in [0..1] then
    a := Combobox1.Text;

  if ComboBox2.ItemIndex in [0..1} then
    c := combobox2.Text;
   
  //name1 := a;
  //name2 := c;
  //name3 := '.txt';
  //dateiname := name1 + name2 + name3;
  dateiname := a + c + '.txt';
  Assignfile(fs, dateiname);
und bei 2 Einträgen bleibt nur noch dieses übrig
Delphi-Quellcode:
var
  fs: textfile;
  dateiname: string;
begin
  dateiname := Combobox1.Text + combobox2.Text + '.txt';
  Assignfile(fs, dateiname);

Also mal ganz einfach:
Was genau möchtest du denn erreichen?

moperswings 26. Mär 2007 14:55

Re: Dateinamen aus ComboBox.Items erstellen
 
Ich möchte aus den Items von 3 ComboBoxen eine Datei erstellen!
z.B.
Combobox1: Kulturpflanze
Items: Gemüse, Getreide, Obst,...

ComboBox2: Getreide
Items: Weizen, Gerste, Hafer,...

comBoxBox3: Thema
Items: Einleitung, Sorten,...

Der Dateiname soll sich dann so zusammensetzen:
Kultur -> gtr +
Getreide: Hafer -> ha +
Thema: Einleitung -> ei =
Dateiname: gtrhaei.txt

Jelly 26. Mär 2007 15:10

Re: Dateinamen aus ComboBox.Items erstellen
 
Dann wird sich das immer so abspielen:
Delphi-Quellcode:
dateiname := combobox1.Text + combobox2.Text + combobox2.Text + '.txt';
Warum also so kompliziert ?

himitsu 26. Mär 2007 15:12

Re: Dateinamen aus ComboBox.Items erstellen
 
Möglichkeiten gäbe es mehrere.

Entweder direkt die Strings zusammensetzen, oder falls andere Werte verwendet werden sollen, wie als Item angebegen, dann halt über den Index die gewünschten Werte wo anders herholen.

Code:
ComboxBox1: Kulturpflanze > Items: Gemüse, Getreide, Obst,...
ComboxBox2: Getreide > Items: Weizen, Gerste, Hafer,...
ComboxBox3: Thema > Items: Einleitung, Sorten,...
ItemIndex jeweils 1
Delphi-Quellcode:
Dateiname := ComboBox1.Text + ComboBox2.Text + ComboBox3.Text + '.txt';
= 'GetreideGersteSorten.txt'

Delphi-Quellcode:
Case ComboBox1.ItemIndex of
  0: Dateiname := 'gem';
  1: Dateiname := 'gtr';
  2: Dateiname := 'obs';
End;
Case ComboBox2.ItemIndex of
  0: Dateiname := Dateiname + 'wi';
  1: Dateiname := Dateiname + 'ge';
  2: Dateiname := Dateiname + 'ha';
End;
Case ComboBox3.ItemIndex of
  0: Dateiname := Dateiname + 'ei';
  1: Dateiname := Dateiname + 'so';
End;
Dateiname := Dateiname + '.txt';
= 'gtrgeso.txt'


Delphi-Quellcode:
Const AKulturpflanze: Array[0..2] of String = ('gem', 'gtr', 'obs');
  AGetreide: Array[0..2] of String = ('wi', 'ge', 'ha');
  AThema: Array[0..1] of String = ('ei', 'so');

Dateiname := AKulturpflanze[ComboBox1.ItemIndex] + AGetreide[ComboBox2.ItemIndex]
  + AThema[ComboBox3.ItemIndex] + '.txt';
= 'gtrgeso.txt'


[edit]
@Jelly: pühhh ... sich einfach einzischleichen ... neeeeee

SirThornberry 26. Mär 2007 15:12

Re: Dateinamen aus ComboBox.Items erstellen
 
".Text" funktioniert wenn ich mich recht entsinne nicht wenn der Style auf "csDropDownList" steht

moperswings 26. Mär 2007 15:16

Re: Dateinamen aus ComboBox.Items erstellen
 
Vielen Dank,

die letzte Lösung sieht SUPER aus!
Ich werde das mal probieren. Das wird mir bestimmt die Arbeit erleichtern und mich inhaltlich weiter bringen.

Danke und viele Grüsse, moperswings

himitsu 26. Mär 2007 15:24

Re: Dateinamen aus ComboBox.Items erstellen
 
Zitat:

Zitat von SirThornberry
".Text" funktioniert wenn ich mich recht entsinne nicht wenn der Style auf "csDropDownList" steht

Wieso nicht?

.Text liefert immer den String, welcher grad in der Box angezeigt wird.

SirThornberry 26. Mär 2007 15:51

Re: Dateinamen aus ComboBox.Items erstellen
 
bei Delphi6 oder Delphi7 mein ich mich zu erinnern das es nicht der Fall war.

himitsu 26. Mär 2007 15:58

Re: Dateinamen aus ComboBox.Items erstellen
 
Also in D4 und D7 geht es :angel:
(mit D7 grad nochma getestet hab)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:12 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