*I asked for a shotgun, not an anti-aircraft!
- shotgun? that must be the guns that fire a shot....
*yes.. you must be the brains
*I asked for a shotgun, not an anti-aircraft!
- shotgun? that must be the guns that fire a shot....
*yes.. you must be the brains
Nope.. d is van het type string (niet std::string maar de string van borland), dus de vergelijking zal goed gaan.mjax schreef op 17 oktober 2002 @ 18:04:
Een klein beetje offtopic, maar tenzij de == operator overloaded is, lijkt me de constructie d == ListBox1->Items->Strings[j] niet gaan werken aangezien je dan pointer met elkaar zit te vergelijken.
listbox1 -> items -> strings[j] kan je schrijven als listbox1 -> items [j];
En kijk eens naar de pos functie. Ik denk dat dat is wat je zoekt.
"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
mjax schreef op 17 oktober 2002 @ 18:04:
Een klein beetje offtopic, maar tenzij de == operator overloaded is, lijkt me de constructie d == ListBox1->Items->Strings[j] niet gaan werken aangezien je dan pointer met elkaar zit te vergelijken.
het heet niet voor niets een AnsiString, dus daar kun je wel vanuit gaan, denk je ook niet? (ik zie nergens pointers namelijk)
Tusk: er bestaat vast wel een InStr of een StrStr functie die naar een string in een andere string zoekt (heeft AnsiString geen find () methode?)
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
*I asked for a shotgun, not an anti-aircraft!
- shotgun? that must be the guns that fire a shot....
*yes.. you must be the brains
Tusk schreef op 17 oktober 2002 @ 18:32:
dat zou ik zo niet weten. ik zal us in de help kijken. ik werk nog niet zo lang met C++
het is wel de bedoeling dat je dat soort dingen zelf opzoekt (daar is tenslotte een manual voor), daar is GoT niet voor bedoeld
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Tusk schreef op 17 oktober 2002 @ 18:32:
dat zou ik zo niet weten. ik zal us in de help kijken. ik werk nog niet zo lang met C++
Dat is altijd het eerste wat je moet doen, in de help kijken.
https://fgheysels.github.io/
*I asked for a shotgun, not an anti-aircraft!
- shotgun? that must be the guns that fire a shot....
*yes.. you must be the brains
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| {
int i;
AnsiString strQuery;
bool blnGevonden;
blnGevonden = false;
strQuery = Edit1->Text;
if(strQuery != "")
{
for(i=0; i <= ListBox1->Items->Count -1;i++)
{
if(ListBox1->Items->Strings[i].Pos(strQuery) != 0)
{
ListBox1->ItemIndex = i;
blnGevonden = true;
break;
}
}
if(blnGevonden == false)
ShowMessage("Er is niks gevonden..");
}
} |
jeuj dit werkt !!
credits go to tom v oorschot
maar nu nog 1 probleempje.
stel je hebt ergens de strings
"slaap te kort"
"bloep"
"aap op een stok"
je typt in edit1 in "aap".
want ik zoek naar aap op stok
maar hij gaat dan naar slaap tekort
nou wil ik net als in notepad en progs etc. dat als je nog een keer klikt hij naar de volgende string gaat die ook "aap" erin heeft staan.
*I asked for a shotgun, not an anti-aircraft!
- shotgun? that must be the guns that fire a shot....
*yes.. you must be the brains
GoT is geen forum waar men je bij het handje neemt. Probeer zelf eens te bereiken wat je wilt, en als het niet lukt, of je komt ergens niet uit, post het dan.
Denk gewoon eerst eens in gewone taal wat je wilt.
Zoeken van bij het begin naar het eerste item waar aap in voorkomt.
Bij nogmaals klikken, verder zoeken vanaf het huidige item.
https://fgheysels.github.io/
tis opgelost.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| {
int i , offset;
AnsiString strQuery, curStr;
bool blnGevonden;
if(nr == 0){
blnGevonden = false;
strQuery = Edit1->Text.LowerCase() ;
if(strQuery != "")
{
for(i=0; i <= ListBox1->Items->Count -1;i++)
{
curStr = ListBox1->Items->Strings[i].LowerCase();
if(curStr.Pos(strQuery) != 0)
{
ListBox1->ItemIndex = i;
blnGevonden = true;
break;
}
}
if(blnGevonden == false)
ShowMessage("Er is niks gevonden..");
nr++;
}
}else{
blnGevonden = false;
offset = ListBox1->ItemIndex;
strQuery = Edit1->Text.LowerCase() ;
if(strQuery != "" && offset != -1)
{
for(i=offset + 1; i <= ListBox1->Items->Count -1;i++)
{
curStr = ListBox1->Items->Strings[i].LowerCase();
if(curStr.Pos(strQuery) != 0)
{
ListBox1->ItemIndex = i;
blnGevonden = true;
break;
}
}
if(blnGevonden == false)
ShowMessage("Er is niks gevonden..");
}
}
} |
het werkt. hoe? weet ik niet...dat ga ik nu zelf us lekker uitpluizen.
bedankt voor al jullie reacties. en wat mij betreft mag dit topic gesloten worden
*I asked for a shotgun, not an anti-aircraft!
- shotgun? that must be the guns that fire a shot....
*yes.. you must be the brains
Dus: geen C++ vragen meer tussen 6 en 7 's avonds!!! Grrr!
[hap]Zoijar schreef op 17 oktober 2002 @ 21:36:
Ja en dan *weer* over die kl**e AnsiString die niet eens standaard is...wat is er toch tegen std::string hehe
Standaarden zijn relatief... als je binnen een bepaald framework programmeert zijn de klasses van dat framework de standaard. En als dat framework een string-class definieert is die string dus de std::string voor die applicatie...
[/hap]
the less one forgets, the less one remembers
Uhh heb je het nou over std::string? Want dan moet je toch echt nog is het boekje openslaanabeker schreef op 17 oktober 2002 @ 22:55:
<offtopic>afgezien van het feit dat die niet lekker naar/uit streams te schrijven/lezen zijn, niks</offtopic>
en idd ik moet me meer verdiepen in de stl
the less one forgets, the less one remembers
abeker schreef op 17 oktober 2002 @ 23:15:
idd over std::string... wegschrijven van string gaat goed, maar het teruglezen gaat niet goed omdat de lengte van de string niet bekend/bepaald kan worden (lengte/zero terminator wordt niet weggeschreven). Er valt natuurlijk wel omheen te werken...
en idd ik moet me meer verdiepen in de stl
dat heeft niets met std::string zelf te maken, bij een char * zou je dat ook hebben, en ook bij bijvoorbeeld AnsiString
nogal logisch: je stuurt tekst naar een stream, maar niet de lengte van dat stukje, dus het is er ook niet meer uit te halen
Als je 2 ints achter elkaar door een stream stuurt krijg je er ook maar 1 terug (zit tenslotte niets tussen). Tekst is dan ook helemaal niet bedoeld voor serializatie
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
De VCL-klasse AnsiString laat zich heerlijk streamen door de VCL-klasses die afgeleid zijn van TStream. Std::string laat zich heerlijk streamen door std::ostream en std::istream derivants. Wederom: blijf in je framework en staar je niet blind op de zgn. handige standaarden. Pas zodra je 2 frameworks/stdlibs/whatever gaat mixen wordt je code een echte rotzooi en vraag je om wazige bugs.abeker schreef op 17 oktober 2002 @ 22:55:
<offtopic>afgezien van het feit dat die niet lekker naar/uit streams te schrijven/lezen zijn, niks</offtopic>
En daarom doen de streamclasses van mijn eigen framework wel eerst de lengte van de string wegschrijven, zodat (mijn eigen.oisyn schreef op 17 oktober 2002 @ 23:28:
nogal logisch: je stuurt tekst naar een stream, maar niet de lengte van dat stukje, dus het is er ook niet meer uit te halen
Als je 2 ints achter elkaar door een stream stuurt krijg je er ook maar 1 terug (zit tenslotte niets tussen). Tekst is dan ook helemaal niet bedoeld voor serializatie
Ik vind dat dus - in eerste instantie, zonder enige achtergrondkennis van std::string te hebben - niet logisch, ik beschouwde een string als één object. Mijn verwachting was dus dat ik dat object zo weg kon schrijven en weer terug kon lezen, maar dat is helaas niet het geval.oisyn schreef op 17 oktober 2002 @ 23:28:
[...]
nogal logisch: je stuurt tekst naar een stream, maar niet de lengte van dat stukje, dus het is er ook niet meer uit te halen
Als je 2 ints achter elkaar door een stream stuurt krijg je er ook maar 1 terug (zit tenslotte niets tussen). Tekst is dan ook helemaal niet bedoeld voor serializatie
the less one forgets, the less one remembers
Verwijderd
[hap]curry684 schreef op 17 oktober 2002 @ 22:54:
[hap]
Standaarden zijn relatief... als je binnen een bepaald framework programmeert zijn de klasses van dat framework de standaard. En als dat framework een string-class definieert is die string dus de std::string voor die applicatie...
[/hap]
We hebben het hier al eens over gehad. De STL is meer dan zomaar een famework, het hoort bij de taalspecificatie en de taal wordt zo verder ontwikkeld dat het de STL het meest ten goede komt. (En als jij dingen in namespace std gaat zitten schrijven dan zit je al goed fout volgens de standaard.)
[/hap]
Het probleem met de C++ is dat de STL de "te laat" gekomen is, waardoor er een wildgroei van "local standards" is ontstaan. Eigenlijk is de STL voor een groot deel in het leven geroepen om deze wildgroei tegen te gaan, want het ontbreken van een "global standard" maakt de taal onhanteerbaar en onleerbaar.
Dat zie je helaas ook telkens weer op dit forum; er ontstaan soms haast babylonische spraakverwarringen, die de beginner met het probleem ongetwijfeld vaak nog verwarder achterlaten dan hij was voor hij de vraag postte.
Laten we dus in godsnaam niet telkens liggen kissebissen over de STL vs. andere library; de heren bij ANSI hebben nu eenmaal de STL ingevoerd en niet een andere library. Het is toch duidelijk dat je iemand die de complexe taal C++ leert niet meteen moet opzadelen met allerlei incompatibiliteiten en erfenissen uit het verleden (zoals C-strings en "naakte" pointers).