Toon posts:

[borland c++ builder 6] listboxen probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik zit met een probleem over listboxen in borland c++ builder 6.
Ik heb een lisbox waarvan de items uit een bestand worden geladen. En nu zou ik graag willen dat deze items gexecute worden. klinkt nogal vaag en dat is het ook :)
daarom zal ik het even uitleggen wat ik graag wil.

Ik heb dus een listbox met daarin items die uit een bestand worden geladen bijvoorbeeld "mspaint.exe" en "notepad.exe". nu wil ik dat als ik op 1 van de 2 buttons die ik heb druk dat hij 1 van deze twee "teksten" uitvoert. Ik geef toe dat mijn uitleg niet perfect is maar ik denk dat het nu wel ongeveer duidelijk is wat ik wil.
Hieronder is de code die ik al heb:

tijdens het opstarten van het programma wordt het volgende uitgevoerd:
ListBox1 -> Items -> LoadFromFile ("programmanamen.txt");

En als je op Button 1 drukt:
WinExec((ListBox1 -> Items[0]),SW_MINIMIZE);

En als je op Button 2 drukt:
WinExec((ListBox1 -> Items[1]),SW_MINIMIZE);

Echter als ik dit compile krijg ik foutmeldingen dat de types niet overeenkomen.
Hoe kan ik dit oplossen.

  • WOmBaT
  • Registratie: September 2000
  • Laatst online: 30-11-2025

WOmBaT

Nyaaa!!!

Is dat niet een PChar voor WinExec? Ben niet zo bekend met c++ :)
Je kunt trouwens beter shellexecute gebruiken :)

Verwijderd

moet je ff zo doen denk ik:

WinExec((ListBox1 -> Items[0].c_str()),SW_MINIMIZE);

WinExec weet niet wat een AnsiString is (en dat is een item uit een TStringList wel). WinExec is een windows API call en die kennen alleen van die char* dingen enzo.

met .c_str() krijg je zo'n 'string' ipv een AnsiString.

Succes ermee

Verwijderd

Topicstarter
bedankt voor de reacties maar het lukt me nog steeds niet.
Als ik :

WinExec((ListBox1 -> Items[0].c_str()),SW_MINIMIZE);

gebruik dan krijg ik de volgende foutmelding.

[C++ Error] interface1.cpp(92): E2316 'c_str' is not a
member of 'TStrings'.

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

WinExec(c_str(ListBox1 -> Items[0]),SW_MINIMIZE) :?

* Varienaja geen C++ expert

Siditamentis astuentis pactum.


Verwijderd

Topicstarter
ook dat werkt niet :'(

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 14:04

Creepy

Tactical Espionage Splatterer

In delphi zou het
code:
1
WinExec(pchar(ListBox1.Items[0]),SW_MINIMIZE)

zijn....
Dus waarschijnlijk in C Builder:
code:
1
WinExec(pchar(ListBox1->Items[0]),SW_MINIMIZE)

of zelfs
code:
1
WinExec((pchar)ListBox1->Items[0],SW_MINIMIZE)

En als C Builder de PChar niet kent dan casten naar een * char.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

WinExec((ListBox1 -> Items[0].c_str()),SW_MINIMIZE); was idd fout

je probeerd nu de method c_str() uit te voeren onder een TStrings... mijn fout, moet dan zijn:

WinExec((ListBox1 -> (Items[0]).c_str()),SW_MINIMIZE);
... de haakjes dus, nu neem je wel de c_str() van een AnsiString...

Verwijderd

Topicstarter
bedankt voor je reactie het is me nu al op een andere manier gelukt, met een hele omweg (dmv sprintf blabla) dus misschien dat ik straks deze manier ook nog ff probeer.
Pagina: 1