[delphi] Eigen mirc dll leest geen inifile uit :(

Pagina: 1
Acties:

  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 09:33
Nou dacht ik na het lezen van enkele eenvoudige guides over het maken van een mirc dll in delphi er eens eentje zelf te maken.
Nou gebruik ik de volgende code om een inifile uit te lezen (wat werkt in een normaal programma)
code:
1
2
3
 ifile                   := Tinifile.Create('test.ini');
  CopyR                  := ifile.readInteger('config','CopyR', CopyR);
 ifile.Free;

(in de uses staat inifiles ;) )

In CopyR hoort dus de waarde 1 te staan (zoals die ook in de inifile staat)
Nu heb ik dus het volgende in de function staan die de tekst in mirc op het scherm gooit.
code:
1
2
3
4
5
if CopyR =1 then
    strcopy(data, 'blaat tekst! ¢ Klaas-Bram)
  else
    strcopy(data, 'blaat tekst!');
  result := 3;

Hij voert dus altijd de else uit.
Wanneer ik "if copyR <>1 then" doet dan voor hij alleen de bovenste uit :(
Mijn conclusie : Hij leest de inifile niet uit :(
Dus nu ben ik bij het volgende probleem aan gekomen: hoe krijg ik dat dus wel aan de praat ?

Taal fouten inbegrepen ;)


  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Als je het fysieke pad naar de ini zou invoeren, doet 'ie het dan wel? Lijkt me dat 'ie in de verkeerde directory zit te lezen. Wat ik altijd doe is de $mircdir variabele vanuit mirc bij de aanroep meegeven, er even vanuitgaande dat je het gewoon in de root van mirc hebt gezet, dan kun je zo het volledige pad aan elkaar plakken...

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 09:33
_Mo_ schreef op 13 augustus 2002 @ 19:26:
Als je het fysieke pad naar de ini zou invoeren, doet 'ie het dan wel? Lijkt me dat 'ie in de verkeerde directory zit te lezen. Wat ik altijd doe is de $mircdir variabele vanuit mirc bij de aanroep meegeven, er even vanuitgaande dat je het gewoon in de root van mirc hebt gezet, dan kun je zo het volledige pad aan elkaar plakken...
En hoe haal ik die $mircdir er uit dan?
Of kan ik gewoon
ifile := Tinifile.Create($mircdir + 'test.ini');
doen?
De dll staat in de mirc dir en de ini ook dus test.ini zou geen probs moeten geven lijkt mij maar dat kan ik natuurlijk fout hebben ;)

Taal fouten inbegrepen ;)


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-09 21:01

.oisyn

Moderator Devschuur®

Demotivational Speaker

ik neem aan dat _Mo_ bedoelt dat je de $mircdir gewoon mee moet geven als parameter bij het laden van je dll vanuit mircscript :)

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.


  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
klaasbram schreef op 13 augustus 2002 @ 20:01:
[...]

En hoe haal ik die $mircdir er uit dan?
Of kan ik gewoon
ifile := Tinifile.Create($mircdir + 'test.ini');
doen?
De dll staat in de mirc dir en de ini ook dus test.ini zou geen probs moeten geven lijkt mij maar dat kan ik natuurlijk fout hebben ;)
Ik weet niet welk pad de dll neemt, maar als je normaal wel een ini kan lezen op deze manier, lijkt me dat het probleem... :?
Anyway... als je de functie in mirc aanroept:
code:
1
    dll MyDLL.dll MyFunction $mircdir

Dan zal in de data parameter de waarde van $mircdir staan. De data parameter wordt overigens gebruikt om zowel parameters mee te geven als een waarde terug te geven. Dus alles wat na MyFunction staat wordt als parameter meegegeven en is te vinden in data. Hoe je dat verder doet is jou zaak ;) Dus als je meerdere dingen wil meegeven, dan zul je een soort van seperator moeten gebruiken (zelf gebruik ik altijd ; )
Ik weet trouwens niet of er een backslash \ achter de waarde van $mircdir staat, maar dat vind je dan wel weer uit :)

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 09:33
Ok door het pad er hard copy in te zetten werkt het :)
Nu nog ff zelf er achter zijn te komen hoe ik het via die $mircdir kan intergreren (de function moet eerst nog ff weten hoe hij wat moet opvangen :P

Taal fouten inbegrepen ;)


  • Elissen
  • Registratie: Januari 2000
  • Laatst online: 27-07 15:54
paramstr(0) levert bij een exe de filename incl pad op van de exe. Bij een dll is dit het pad van de exe welke de dll laad.
Ik denk dat je current dir het pad van de exe is. Daar wordt waarschijnlijk de ini-file verwacht. Beter is inderdaad een absoluut pad opgeven.

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Elissen schreef op 13 augustus 2002 @ 21:13:
paramstr(0) levert bij een exe de filename incl pad op van de exe. Bij een dll is dit het pad van de exe welke de dll laad.
Ik denk dat je current dir het pad van de exe is. Daar wordt waarschijnlijk de ini-file verwacht. Beter is inderdaad een absoluut pad opgeven.
Volgens mij, als je een file "blaat.txt" probeert te openen, gaat 'ie gewoon in de working directory kijken.
Draaide je toevallig de dll/mirc vanuit de debugger in je IDE? Of gewoon vanuit mirc? Als je het namelijk vanuit de IDE draait, dan is de working dir niet de mirc dir... tenminste, was niet zo toen ik mijn dll in Visual C++ maakte, kweet niet hoe anders dat gaat met Delphi... :)

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 09:33
Elissen schreef op 13 augustus 2002 @ 21:13:
paramstr(0) levert bij een exe de filename incl pad op van de exe. Bij een dll is dit het pad van de exe welke de dll laad.
Ik denk dat je current dir het pad van de exe is. Daar wordt waarschijnlijk de ini-file verwacht. Beter is inderdaad een absoluut pad opgeven.
Dat werkt perfect :)
Ik dacht dat ExtractFilePath(ParamStr(0)) alleen bij executables werkte

Taal fouten inbegrepen ;)

Pagina: 1