NEED HELP IN C++

M

Marcin Borkowski

Hello

I need some small help in the Borland C++ Builder.
I need to do something with string in format like "var1|var2|var3|var4|" and
add it to some ComboBox (Items -> Add("var1"), Items -> Add("var2") etc.).

Help me, please. How can i do it in the "while" function or something?

Best regards
Martin
 
W

Wolfgang Senfter

Marcin said:
I need to do something with string in format like "var1|var2|var3|var4|"
and add it to some ComboBox (Items -> Add("var1"), Items -> Add("var2")
etc.).

use the AnsiString.

there are 2 methods. substr and pos ( or strpos ).

AnsiString tmp = "var1|var2|var3";
int charPos = tmp.pos("|");

so you have the position of the |
and with the substr you can copy the part you want

syntax: substr(index, count);

example:
Items->Add(tmp.substr(0, charPos));

delete the elemnt you added and repeat that until pos returns an error.
 
M

Marcin Borkowski

don't work :(
i don't know c++ very well but i need to do some changes in source code that
i have got :(

PLEASE, could you write me some whilte instruction 4 this problem?
I only need to add informations from string in format "var1|var2|var3" to
the ComboBox:

It should create something like this:

ComboBox -> Items->Add("var1");
ComboBox -> Items->Add("var2");
ComboBox -> Items->Add("var3");

Adn i don't know how can i do it in while instruction :(

PLEASE, PLEASE and one more time ------> PLEASE :(

Best regards,
Martin
 
K

Karl Heinz Buchegger

Marcin said:
don't work :(
i don't know c++ very well but i need to do some changes in source code that
i have got :(

Hire a programmer to do it.
That's what we are paid for.
 
M

Marcin Borkowski

If you don't know answer 4 my question, don't post, please.
This is not the shop with help.
 
K

Karl Heinz Buchegger

Marcin said:
If you don't know answer 4 my question, don't post, please.
This is not the shop with help.

1) Don't top post
2) It would be good idea to actually *show* us what
doesn't work.
What have you tried?
What results did you get?

Don't write: "don't work :("
But instead write: I used this code

<insert your code here>

but it does not do <insert what you expect your code to do>

and somebody will show you how it's done. You actually might
learn something by doing so.
But be warned: no Borland extensions. We discuss standard C++
only in this NG. The std::string class can do perfectly what
you want to do.
 
F

Frank Schmitt

Wolfgang Senfter said:
use the AnsiString.

Please don't post OT answers - AnsiString is not a part of standard C++.
Use std::string instead.

kind regards
frank
 
B

Buster Copley

Marcin said:
If you don't know answer 4 my question, don't post, please.
This is not the shop with help.

You should ask this question on Borland's newsgroups.
You can sign up at (hold on while I google for
"Borland newsgroups", just a second ... )
http://info.borland.com/newsgroups/ng_cbuilder.html

I don't have Builder installed so I can't look this stuff
up in the help files or test my code. You'll gave to check
the details yourself.

// Put these declarations in the 'TForm1' class
// in the 'Unit1.h' file.
TComboBox * ComboBoxes [4];
void __fastcall FillComboBoxes (AnsiString s);
struct EFillComboError { };

// Put this in the 'TForm1' constructor in 'Unit1.cpp'.
ComboBoxes [0] = ComboBox1;
ComboBoxes [1] = ComboBox2;
ComboBoxes [2] = ComboBox3;
ComboBoxes [3] = ComboBox4;

// Put this definition in 'Unit1.cpp'.
void __fastcall TForm1::FillComboBoxes (AnsiString AString)
{
std::auto_ptr <TStringList> StringList (new TStringList);

StringList->Delimiter = "|"; // ?? Check in help.
StringList->DelimitedText = AString;

if (StringList->Count != 4) throw EFillComboError ();

for (int i = 0; i != 4; ++ i)
ComboBoxes ->Text = StringList->Strings ;
}
 
C

Christopher Benson-Manica

Buster Copley said:
You should ask this question on Borland's newsgroups.

A noble thought, but from what I can see very few people post there. OP would
probably do better on comp.os.ms-windows.programmer.win32.
 
B

Buster Copley

Christopher said:
A noble thought, but from what I can see very few people post there. OP would
probably do better on comp.os.ms-windows.programmer.win32.

I used to hang around on borland.public.cppbuilder.language.cpp quite
a lot. The traffic was high and the TeamB volunteers were helpful and
would answer pretty much any and all queries. The off-topic police
didn't seem to be too much in force and the atmosphere was friendly.

Since there is a fairly large number of borland.public.cppbuilder.*
groups, some of them don't get many posts, but language.cpp, nativeapi,
vcl.components.[using|writing] and a few others are certainly worth
checking out.

For this particular question, borland.public.cppbuilder.language.cpp is
the place to go. General Win32 programmers won't know their AnsiStrings
from their elbows.

Regards,
Buster.
 
C

Christopher Benson-Manica

Buster Copley said:
For this particular question, borland.public.cppbuilder.language.cpp is
the place to go. General Win32 programmers won't know their AnsiStrings
from their elbows.

My apologies - my news server apparently doesn't carry b.p.c.language.cpp, only
b.p.c.language (and some other zero-traffic Borland groups). Now I'm left to
wonder why my news server hates me ;)
 
B

Buster Copley

Christopher said:
My apologies - my news server apparently doesn't carry b.p.c.language.cpp, only
b.p.c.language (and some other zero-traffic Borland groups). Now I'm left to
wonder why my news server hates me ;)

Borland reorganised the hierarchy a while back and some servers haven't
yet caught up. (Even) Google had it wrong last time I looked.

Regards,
Buster.
 
B

Buster Copley

Buster said:
Marcin Borkowski wrote:

I don't have Builder installed so I can't look this stuff
up in the help files or test my code. You'll gave to check
the details yourself.
// Put these declarations in the 'TForm1' class
// in the 'Unit1.h' file.
TComboBox * ComboBoxes [4];
void __fastcall FillComboBoxes (AnsiString s);
struct EFillComboError { };

// Put this in the 'TForm1' constructor in 'Unit1.cpp'.
ComboBoxes [0] = ComboBox1;
ComboBoxes [1] = ComboBox2;
ComboBoxes [2] = ComboBox3;
ComboBoxes [3] = ComboBox4;

// Put this definition in 'Unit1.cpp'.
void __fastcall TForm1::FillComboBoxes (AnsiString AString)
{
std::auto_ptr <TStringList> StringList (new TStringList);

StringList->Delimiter = "|"; // ?? Check in help.
StringList->DelimitedText = AString;

if (StringList->Count != 4) throw EFillComboError ();

for (int i = 0; i != 4; ++ i)
ComboBoxes ->Text = StringList->Strings ;
}


Sorry, that doesn't do what you asked at all.
This is possibly closer:

void __fastcall
TForm1::FillComboBox (TComboBox * ComboBox, AnsiString AString)
{
auto_ptr <TStringList> StringList (new TStringList);

StringList->Delimiter = "|"; // ?? Check in help.
StringList->DelimitedText = AString;

ComboBox->Items->Clear (); // ?? No idea if that's the right idiom

for (int i = 0, n = StringList.Count; i != n; ++ i)
{
ComboBox->Add (StringList->Strings );
}
}
 
B

Buster

Checked and tested.

void __fastcall TForm1::FillComboBox(TComboBox * ComboBox, AnsiString AString)
{
std::auto_ptr <TStringList> StringList (new TStringList);
StringList->Delimiter = '|';
StringList->DelimitedText = AString;
ComboBox->Items->Assign (StringList.get ());
ComboBox->ItemIndex = 0;
}
 
B

Buster

Dammit. This is a one-liner.
In the form constructor, put

ComboBox1->Items->Delimiter='|';

Then just use

ComboBox1->Items->DelimitedText = "var1|var2|var3|var4";
ComboBox1->Text = "Choose one ...";

I bet you would have got this straight away on
"borland.public.cppbuilder.vcl.components.using".

Regards,
Buster.
 
R

red floyd

Buster said:
Borland reorganised the hierarchy a while back and some servers haven't
yet caught up. (Even) Google had it wrong last time I looked.

Regards,
Buster.

Also, don't worry about your newsserver. Use "newsgroups.borland.com" as a newsserver
for borland groups. Similarly, for VC specific stuff, use "msnews.microsoft.com", but they're
currently getting hammered by the worms.
 
D

Duane

Borland reorganised the hierarchy a while back and some servers haven't
Also, don't worry about your newsserver. Use "newsgroups.borland.com" as a newsserver
for borland groups. Similarly, for VC specific stuff, use
"msnews.microsoft.com", but they're
currently getting hammered by the worms.

Borland seems to be having problems with their server this week though...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,143
Messages
2,570,822
Members
47,368
Latest member
michaelsmithh

Latest Threads

Top