Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Load ini section into ComboBox?

Posted on 1998-09-18
19
576 Views
Last Modified: 2010-04-06
Hello!

I am new to Delphi, and am trying to write a simple
program which takes an INIfile section, strips out
everything from the "=" right (for each entry) and then
load it all into a combo box. So far, I have been able
to load the section into the combo box:

procedure TForm1.Button1Click(Sender: TObject);
  var
  DelphiIni: TIniFile;
  begin
  DelphiIni := TIniFile.Create('c:\windows\desktop\test.ini');
  DelphiIni.ReadSectionValues('colors', ComboBox1.Items);
  ComboBox1.ItemIndex := 0;
  DelphiIni.Free;
end;

The test.ini looks like this:
[colors]
color1=blue
color2=red
color3=green

But...I want to strip out everything from the "=" to
the right so that all I see in the combo box is:

color1
color2
color3

I have been able to do it in visual basic, but am
having a devil of a time doing it in Delphi. any
help or samples would be greatly appreciated.

Thanks!

-S
0
Comment
Question by:summerset
  • 12
  • 6
19 Comments
 
LVL 1

Expert Comment

by:nrobin
ID: 1340134
procedure TForm1.Button1Click(Sender: TObject);
      var
            DelphiIni: TIniFile;
            tempItems: TStringList;
            nIndex: Integer;

      begin
            tempItems := TStringList.Create;
            DelphiIni := TIniFile.Create('c:\windows\win.ini');
            DelphiIni.ReadSectionValues ('windows', tempItems);

            for nIndex := 0 to tempItems.Count - 1 do
                  Combobox1.Items.Add (Copy (tempItems [nIndex], 1, Pos ('=', tempItems [nIndex]) - 1));
            ComboBox1.ItemIndex := 0;
            DelphiIni.Free;
      end;

That should do it, there are better ways but its fast and easy.

Nicholas.
0
 
LVL 10

Accepted Solution

by:
viktornet earned 120 total points
ID: 1340135
procedure TForm1.Button1Click(Sender: TObject);
     var
     DelphiIni: TIniFile;
i, nPos : integer;
str : string;
     begin
     DelphiIni := TIniFile.Create('c:\windows\desktop\test.ini');
     DelphiIni.ReadSectionValues('colors', ComboBox1.Items);
    for i := 0 to ComboBox1.Items.Count - 1 do
begin
      nPos := Pos('=', ComboBox1.Strings[i]);
      str := ComboBox1.Items.Strings[i];
      ComboBox1.Items.Strings[i] := Copy(ComboBox1.Items.Strings[i],
                nPos + 1, Length(str) - nPos + 1;
end;
     ComboBox1.ItemIndex := 0;
     DelphiIni.Free;
   end;

Haven't tried this but is spupose to be working.....

Regards,
Viktor Ivanov
0
 
LVL 10

Expert Comment

by:viktornet
ID: 1340136
Hello

The example nRobin gave you will copy the first part, not the color....

e.g Color1=Blue

His example will enter the Color1 string, and my example will enter Blue in the ComboBox...

Regards,
Viktor Ivanov
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 10

Expert Comment

by:viktornet
ID: 1340137
OPppppps........sorry didn't read your questions to the end....You want to copy everything to the right....Sorry, but nRobin's example was correct...sorry for the misunderstanding....

Here it is again....
---------
procedure TForm1.Button1Click(Sender: TObject);
        var
        DelphiIni: TIniFile;
   i: integer;
        begin
        DelphiIni := TIniFile.Create('c:\windows\desktop\test.ini');
        DelphiIni.ReadSectionValues('colors', ComboBox1.Items);
       for i := 0 to ComboBox1.Items.Count - 1 do
   begin  
         ComboBox1.Items.Strings[i] := Copy(ComboBox1.Items.Strings[i], 1,
                   Pos('=', ComboBox1.Strings[i]) - 1);
   end;
        ComboBox1.ItemIndex := 0;
        DelphiIni.Free;
      end;

Regards,
Viktor Ivanov
0
 
LVL 4

Expert Comment

by:erajoj
ID: 1340138
Hi,
it's even easier:

  Uses ... IniFiles;

  Ini: TIniFile;
  ...
  Ini := TIniFile.Create( 'whatever.ini' );
  Ini.ReadSection( 'misc', ComboBox1.Items );
  Ini.Free;

Please don't intricate everything! ;-)

/// John
0
 
LVL 10

Expert Comment

by:viktornet
ID: 1340139
Sorry, didn't have much time to work on it, and still haven't tried your way, but it seems to be the easiest ;-)

(@Viktor Ivanov)^.Data;
0
 
LVL 4

Expert Comment

by:erajoj
ID: 1340140
Shouldn't that be "(@Viktor_Ivanov)^.Data;" ?
Whitespaces aren't allowed in identifiers, you know? ;-)))

pt := Point( $202F2F2F, $6E686F4A );
SetString( sSig, PChar( @pt ), SizeOf( TPoint ) );
WriteLn( Output, sSig );

0
 
LVL 10

Expert Comment

by:viktornet
ID: 1340141
Who actually cares??? Just kidding... I seems to have forgotten it :-(

Regards,
(@Viktor_Ivanov)^.Name;
0
 
LVL 10

Expert Comment

by:viktornet
ID: 1340142
Hello John,

Just tried the code you post up there and I'm amazed of how cool you think ;->

What would print my name in the caption of the form by using the following code???

var
  pt : TPoint;
begin
  pt := Point( $202F2F2F, $6E686F4A );//Just change the values of the x,y of point
 Caption := StrPas(PChar(@pt)));
end;

Regards,
Viktor Ivanov
0
 
LVL 10

Expert Comment

by:viktornet
ID: 1340143
John Hello again!

I tried something but it displays my names reversed... Any idea why is that..Here is my coordinates for the point....

pt := Point( $202F2F2F, $56696B);//It is supose to be Vik and it prints kiV instead . o O

//Vik
0
 
LVL 4

Expert Comment

by:erajoj
ID: 1340144
Hi Viktor,
That code only works with my sig. Your sig is too long (23 chars).
Besides, your "codeoptimizing" will not work, unless the stack incidentally provides a null terminator. NEVER trust that!
If I find out a really esoteric way of writing your sig, I'll mail you.

/// John
0
 
LVL 10

Expert Comment

by:viktornet
ID: 1340145
Oh, oK.....Here is my name.....try it.....At least the first two letters.. ;->

pt := Point( $202F2F2F, $6B6956);
0
 
LVL 10

Expert Comment

by:viktornet
ID: 1340146
pt := Point( $206B6956, $726F74);

This one displays Vik tor
do you know how can I remove the space in between???

Regards,
Viktor Ivanov
0
 
LVL 10

Expert Comment

by:viktornet
ID: 1340147
This one could be my signature... What do you think???

pt := Point( $6B695620, $726F74);

 Viktor
0
 
LVL 4

Expert Comment

by:erajoj
ID: 1340148
I see you've got it, but you mean first three, not two, right?
I personally like the little-endian architecture of the Intel processors and find big-endian of, for instance, Motorola processors a bit messy.

/// John
0
 
LVL 10

Expert Comment

by:viktornet
ID: 1340149
Yeah, sorry for misspeling {:-o)

Viktor

Can you think of an intersting signatue so it can fit in the coordinates of the point???

0
 
LVL 4

Expert Comment

by:erajoj
ID: 1340150
Yes, that's correct.
"/Viktor" => pt := Point( $6B695627, $726F74);
"Viktor"  => pt := Point( $746B6956, $726F);

/// John
0
 
LVL 4

Expert Comment

by:erajoj
ID: 1340151
Yes, but it'll take some work, and I really have to work now.
L8R

/// John
0
 
LVL 10

Expert Comment

by:viktornet
ID: 1340152
Ok, Tell me when you finish work!

Tok 2 U L8R ;->

Viktor
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

791 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question