04. oktober 2002 - 17:23Der er
14 kommentarer og 2 løsninger
Lidt med strings
Hej, jeg er ved at lave en IRC bot. Jeg vil gerne have en lille smule hjælp til dette.
Når en bruger joiner en kanal skal brugerens hostmask sammenlignes med en linie i en fil. for eksempel hvis en bruger joiner en kanal og hans hostmask er ~test1@adsl.dk og linierne i en tekstfil er
skal programmet finde linien som matcher fuldstændig med hostmasken og gøre et eller andet.
Jeg har også et andet spørgsmål: Hvis man i en fil har en masse kanaler listet i en tekstfil, som klienten skal joine når den connecter på netværket, hvis nu tekstfilen ser sådan ud:
#kanal1 #kanal2 #hererviseje
skal den fx gøre irckomponent.join(InsertChannelNameHere); ved hver af linierne.
Jeg har også et problem med en TMemo som kommer med erroren "index out of bounds" når man adder linier til den.
Og noget mere.. Hvis jeg har denne tekst:
tekst1 tekst2 tekst3
Hvordan kan jeg så se hvad tekst1 og tekst2 osv. er?
Jeg lægger 100 point op, og jeg giver gerne mere -
var st:tstringlist; i:integer; begin st := tstringlist.create; st.loadfromfile('brugernavne.txt'); for i := 0 to st.count-1 do if st.strings[I] = '~test1@adsl.dk' then begin showmessage('fandt ~test1@adsl.dk'); end;
2) var st:tstringlist; i:integer; begin st := tstringlist.create; st.loadfromfile('serverlist.txt'); for i := 0 to st.count-1 do irckomponent.join(st.strings[I]);
dkn >> Nu skal vi ikke gøre verden mere besværlig en den er :-)
var StringList : TStringList; i : Integer; begin StringList := TStringList.Create; with TStringList.Create do try LoafFromFile('BrugerNavne.txt') i := IndexOf('~test1@adsl.dk'); finally Free; end;
if i >= 0 then ShowMessage(Format('Fandt ~test1@adsl.dk på potion %d',[i]) ) else ShowMessage('Desværre Botgård !!!');
DKN >>> jeg har før deltaget i leje som "Compileren bærer ikke nag .." Og som en følge der af gjalt det om at løse en bestemt opgave med færest mulige tegn !
Jeg leger skam ikke med compileren når jeg laver noget seriøst koder jeg skam miljøbevidst. Men jeg må da indrømme at jeg bare fik skrevet noget ekstra kode i forhold til opgaven som det skulle løse. Jeg syntes da også jeg har fået undskyldt mig...
Angående opstilling af kode bruger jeg selv en source formatter for at spare tid på at lave indryk. Der er nu ikke noget så dejligt som en overskuelig kode i pascal :)
Synes godt om
Slettet bruger
06. oktober 2002 - 19:28#11
Borrisholt> hvad betyder potion %d? Er det linienummeret, eller..?
By default, the debugger displays the result of a watch in the format that matches the data type of the expression. For example, by default, integer values are displayed in decimal form. If you select Hexadecimal in the Watch Properties dialog box for an integer type expression, the debugger changes the display format from decimal to hexadecimal.
If you are setting up a watch on an element in a data structure (such as an array), you can display the values of consecutive data elements. For example, suppose you have an array of five integers named xarray. Type the number 5 in Repeat Count on the Watch Properties dialog box to see all five values of the array. To use a repeat count, however, the watch expression must represent a single data element.
To format a floating-point expression, select Decimal at Display format and enter a number for Digits on the Watch Properties dialog to indicate the number of significant digits you want displayed in the Watch List.
The following table describes the watch expression format options and their effects.
Option Types affected Description
Hexadecimal integers/characters Shows integer values in hexadecimal with the 0x prefix, including those in data structures. Character characters/strings Shows special display characters for ASCII 0 to 31. By default, such characters are shown using the appropriate C escape sequences (\n, \t, and so forth). Decimal integers Shows integer values in decimal form, including those in data structures. Floating point floating point Shows the significant digits specified; from 2-18. The default is 7.
Memory dump all Shows the size in bytes starting at the address of the indicated expression. By default, each byte displays two hex digits. Use the memory dump with the character, decimal, hexadecimal, and string options to change the byte formatting. Use the Repeat Count setting to specify the number of bytes you want to display. Pointer pointers Shows the address of the pointer. Structure/Union structures /unions Shows field names and unions as well as values such as X:1;Y:10;Z:5.
String char, strings Shows ASCII 0 to 31 as C escape sequences. Use this option only to modify memory dumps. Default all Shows the result in the display format that matches the data type of the expression.
Ok du har ikke valgt den der hedder "Format function"
men jeg har det til dig her:
function Format(const Format: string; const Args: array of const): string;
Description
This function formats the series of arguments in the open array Args. Formatting is controlled by the format string Format; the results are returned in the function result as a string.
For information on the format strings, see Format Strings.
//*****
d Decimal. The argument must be an integer value. The value is converted to a string of decimal digits. If the format string contains a precision specifier, it indicates that the resulting string must contain at least the specified number of digits; if the value has less digits, the resulting string is left-padded with zeros.
skal den fx gøre irckomponent.join(InsertChannelNameHere); ved hver af linierne. Prøv med irckomponent.join(#chan1,#chan2,#chan3); IRC protokollen tillader ihvertfald at man kan joine flere kanaler på en gang med den kommando (JOIN #chan....), du skal dog sende hver kanal alene hvis der skal bruges en key (JOIN #chan key).
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.