Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Combobox auswerten?!? (https://www.delphipraxis.net/36726-combobox-auswerten.html)

plautzer 24. Dez 2004 13:12


Combobox auswerten?!?
 
Hi,

ich habe in einer Combobox zwei Felder einer tabelle (ID +''+ Bezeichnung), damit eine genau selektion möglich ist. Ich stehe jetzt vor dem problem ich das ich sie nicht auswerten kann. ICh bräuchte den wert der ID in einer Variable.
Die beiden werte sind per leerzeichen getrennt.. kann man das nutzen und die ID bis zum leerzeichen definieren?

Noch zum verständnis: Per Comboboxselect sollen dann die dazugehörigen daten in EDits eingetragen werden!

Danke euch,

Plautzer

glkgereon 24. Dez 2004 13:25

Re: Combobox auswerten?!?
 
die gewählte zeile der ComboBox kriegst du mit ItemIndex raus, die Strings stehen in Items, oder du nimmst doie eigenschaft SelText

Du kannst mit Pos(' ',t); die position des ersten leereichens in einem string t rausfinden

mit t2:=copy(t,1,5) kopierst du die ersten 5 zeichen aus t in t2

mit tint:=strtoint(tstring) machst du aus dem string tstring einen integer tint

wenn du das alles richtig zusammenschmeisst sollte es klappen....

plautzer 24. Dez 2004 14:54

Re: Combobox auswerten?!?
 
HI,

ich bekomme bei f:=Pos('',t); immer nur 0 raus?

So schaut mein input code aus:
Delphi-Quellcode:
CB_haus.Items.Add(D_haus.Fields[1].Asstring+ ' ' + D_haus.Fields[2].asstring);
Herausfinde der Position:

Delphi-Quellcode:
CB_haus.Focused;
i:=CB_haus.ItemIndex;
a:=CB_haus.Text;
f:=Pos('',t);
Verstehe net warum das nicht geht.

Plautzer

Ultimator 24. Dez 2004 15:29

Re: Combobox auswerten?!?
 
Ich vermute mal, dass du zwischen ID und Bezeichnung ein Leerzeichen gesetzt hast, oder?
Dann wäre das hier falsch:
Delphi-Quellcode:
f:=Pos('',t);
Das hier jedoch richtig:
Delphi-Quellcode:
f:=Pos(' ',t);
Ich hoffe, ich habe das richtig verstanden ;-)

glkgereon 24. Dez 2004 22:31

Re: Combobox auswerten?!?
 
jup, ultimator hat wahrscheinlich recht

du setzt statt eines blank ' ' einen leeren string ''....

plautzer 25. Dez 2004 00:23

Re: Combobox auswerten?!?
 
Jepp... es funzt jez.

Ich hatte gedacht, dass da '' schon als leerstring gilt.

Thx leute,

Plautzer

Luckie 25. Dez 2004 00:37

Re: Combobox auswerten?!?
 
Ich würde ie Methode Delphi-Referenz durchsuchenAddObject nehmen und die ID zusätzlich als Zeiger auf eine Datenstruktur mit dem Item selner ablegen. Dann sparst du dir das Gefrickel mit pos und copy. Desweiteren halte ich es für die elegantere Lösung - aber auch eben programmiertechnisch etwas anspruchsvoller. ;)

plautzer 31. Dez 2004 14:19

Re: Combobox auswerten?!?
 
HI,

it addobject komme ich garnet zu recht, da weiß ich gar nicht wie anfangen sollte.

@ultimator

Wie ermittle ich den 2ten wert?
z.B.

1 2 3 4

wie kann ich das auslesen und wenn möglich in variabelen speichern?

Ich habs so probiert:

Delphi-Quellcode:
edit1.Focused;
a:=edit1.Text;
f1:=0;
while f1 < edit1.GetTextLen do
begin
f2:=Pos(' ',a);    // ich vermute hier den fehler (beim 2ten durchlauf um eins zu klein)
a2:=copy(a,f1,f2-1);
n:=strtoint(a2);
f1:=f2+1;
Funzt aber nicht ganz. Einen durchlauf macht er aber dann kommt die fehlermeldung *' ' ist keine gültiger integer * ;

Wie bekomme ich die schleife zum laufen?
Wo gibts noch einen besseren weg?

THx,

Plautzer

Ultimator 31. Dez 2004 15:31

Re: Combobox auswerten?!?
 
Angenommen, du hast 4 Werte, 1 2 3 4, jeweils durch ein Leerzeichen getrennt.
Delphi-Quellcode:
var zahl1, zahl2, zahl3, zahl4, zahlaktuell:byte; //Positionen der Zahlen
  zahlen:string;
...
begin
zahlen:='1 2 3 4';
zahlaktuell:=pos('1',zahlen); //Position der 1. Zahl
zahl1:=strtoint(copy(zahlen,zahlaktuell,1)); //Die erste Zahl in die Variable Zahl1 zur Weiterverarbeitung kopieren
zahlaktuell:=pos('2',zahlen); //Position der 2. Zahl
zahl2:=strtoint(copy(zahlen,zahlaktuell,1));
zahlaktuell:=pos('3',zahlen); //Position der 3. Zahl
zahl3:=strtoint(copy(zahlen,zahlaktuell,1));
zahlaktuell:=pos('4',zahlen); //Position der 4. Zahl
zahl4:=strtoint(copy(zahlen,zahlaktuell,1));
ShowMessage('Zahl 1 ist '+inttostr(zahl1)+#10#13+'Zahl 2 ist '+inttostr(zahl2)+#10#13+'Zahl 3 ist '+inttostr(zahl3)+#10#13+'Zahl 4 ist '+inttostr(zahl4));
end;
Wenns mehr Zahlen sind, köntest dus evtl. in ne Schleife packen, aber das solltest du schon schaffen ;-)

plautzer 31. Dez 2004 16:31

Re: Combobox auswerten?!?
 
Ja, das ganze ist einfach wenn man die Zahlen kennt.
Das ganze ist aber dynamisch, zb 2 45 567 2 4563, wie liest mann so etwas aus?

Ich habe mir ja schon überlegt die position gleich in eine variable überzugeben und nicht erst in edit. Das beste wäre in ein array : a[1]:=zahl1, a[2]:=zahl2 etc.

Das könnte man dann wunderbar an die speicherprocedure übergeben und in einer schleife abarbeiten.

Ultimator 31. Dez 2004 16:35

Re: Combobox auswerten?!?
 
Dann musst du halt beim copy()-Befehl als dritten Parameter Delphi-Referenz durchsuchenPosEx() nach Leerzeichen bemühen ;-)

plautzer 1. Jan 2005 16:55

Re: Combobox auswerten?!?
 
Hi,

ich hoffe ihr seit alles gerutscht... ich wünsche euch alles gute für neue Jahr!!!

Nun zurück zur arbeit :)

Ich habe delphi 6 pro und bei mir gibt es eine solche Bezeichnung Posex() nicht.

Gibts diese nur in neueren Versionen von Delphi?

Gibts auch einen anderen weg?

thx,

Plautzer

Ultimator 1. Jan 2005 16:56

Re: Combobox auswerten?!?
 
Hmmm, ich hab zwar Delphi 7, aber in Delphi 6 müssts auch schon gehen.

Hast du die Unit Strutils eingebunden?

Matze 1. Jan 2005 16:58

Re: Combobox auswerten?!?
 
Binde mal die Unit StrUtils ein.

plautzer 1. Jan 2005 17:10

Re: Combobox auswerten?!?
 
Nee,

läuft nicht. ich kann diesen Begriff auch nicht in der Hilfe finden.

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, StrUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DBCtrls, DB, Mask, IBCustomDataSet,
  IBDatabase, IBStoredProc, Grids, DBGrids;
beim ausführen kommt undefinierter Bezeichner!

Plautzer


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