Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 640
  • Last Modified:

Load ini section into ComboBox?

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
summerset
Asked:
summerset
  • 12
  • 6
1 Solution
 
nrobinCommented:
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
 
viktornetCommented:
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
 
viktornetCommented:
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
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
viktornetCommented:
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
 
erajojCommented:
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
 
viktornetCommented:
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
 
erajojCommented:
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
 
viktornetCommented:
Who actually cares??? Just kidding... I seems to have forgotten it :-(

Regards,
(@Viktor_Ivanov)^.Name;
0
 
viktornetCommented:
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
 
viktornetCommented:
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
 
erajojCommented:
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
 
viktornetCommented:
Oh, oK.....Here is my name.....try it.....At least the first two letters.. ;->

pt := Point( $202F2F2F, $6B6956);
0
 
viktornetCommented:
pt := Point( $206B6956, $726F74);

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

Regards,
Viktor Ivanov
0
 
viktornetCommented:
This one could be my signature... What do you think???

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

 Viktor
0
 
erajojCommented:
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
 
viktornetCommented:
Yeah, sorry for misspeling {:-o)

Viktor

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

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

/// John
0
 
erajojCommented:
Yes, but it'll take some work, and I really have to work now.
L8R

/// John
0
 
viktornetCommented:
Ok, Tell me when you finish work!

Tok 2 U L8R ;->

Viktor
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 12
  • 6
Tackle projects and never again get stuck behind a technical roadblock.
Join Now