[DUG] RFID - EAccess violation

Karl Reynolds kreynolds at chocfishsoft.co.nz
Thu May 28 16:07:15 NZST 2015


That should be

if i < 6 then

Cheers,
Carl

On Thu, May 28, 2015 at 4:06 PM, Karl Reynolds <kreynolds at chocfishsoft.co.nz
> wrote:

> *Incidentally, "buffer" is used in the original code - it receives the
> keydata string via the call to StrPCopy.  "key" ends up as effectively
> @buffer[0]*
>
> Oh right, I missed that! Then what I wrote was wrong, especially if the
> function is expecting to write back over buffer.. Yes, we do really need to
> know more about the function being called; in the absence of that
> information though, it wouldn't hurt to initialise the arrays.
>
> var
>   key, bufferr: PChar;
>   keydata, bufferrdata: array[0..255] of char;
>   ...
> begin
>   for i := 0 to 255 do
>   begin
>     if i <= 6 then
>     begin
>       keydata[i] := #255;
>     end
>     else keydata[i] := #0;
>     bufferrdata[i] := #0;
>   end;
>   key := PChar(@keydata);
>   bufferr := PChar(@buffdata);
>   receive := API_PCDRead(0,0,$00,10,1,key,bufferr);
>   ...
>
> (I called it keydata rather than buffer to save myself confusion :))
>
> Cheers,
> Carl
>
> On Thu, May 28, 2015 at 3:41 PM, Jolyon Smith <jsmith at deltics.co.nz>
> wrote:
>
>> Fair enough.  That wasn't entirely clear so thought it worth clarifying
>> in case the OP was confused into thinking this was somehow involved in the
>> AV.
>>
>> (Incidentally, "buffer" is used in the original code - it receives the
>> keydata string via the call to StrPCopy.  "key" ends up as effectively
>> @buffer[0]).
>>
>> On 28 May 2015 at 15:31, Karl Reynolds <kreynolds at chocfishsoft.co.nz>
>> wrote:
>>
>>> Jolyon, I was pointing out a separate error that had nothing to do with
>>> the AV he was getting.
>>>
>>> *> there looks to be an error in your code even if it works*
>>>
>>> Cheers,
>>> Carl
>>>
>>> On Thu, May 28, 2015 at 2:43 PM, Jolyon Smith <jsmith at deltics.co.nz>
>>> wrote:
>>>
>>>> @Carl,
>>>>
>>>> Although the code probably is incorrect in the way that it references
>>>> buffer after the call, rather than bufferr, this in itself will not cause
>>>> an AV since both buffer and bufferr are both statically allocated arrays
>>>> and thus references to items in these arrays will be valid, even if not
>>>> correct, as long as those references are within the bounds of the array,
>>>> which they are in this case.
>>>>
>>>> On 28 May 2015 at 12:33, Karl Reynolds <kreynolds at chocfishsoft.co.nz>
>>>> wrote:
>>>>
>>>>> I don't know the API_PCDRead function. But there looks to be an error
>>>>> in your code even if it works. You are passing bufferr (two 'r's) to the
>>>>> function but referring to buffer (one 'r') afterwards, which wasn't used
>>>>> (unless there's other code you didn't show). So you need to look at that.
>>>>>
>>>>> That aside, for the bit leading up to the call, try something like:
>>>>>
>>>>> var
>>>>>   key, bufferr: PChar;
>>>>>   keydata: string;
>>>>>   buffdata: array[0..255] of char;
>>>>>   ...
>>>>> begin
>>>>>  // Allocate a string of six consecutive $FFs
>>>>>   keydata := #255#255#255#255#255#255;
>>>>>
>>>>>  // Convert to a PChar, an easy way to avoid having to allocate memory
>>>>> explicitly
>>>>>   key := PChar(keydata);
>>>>>
>>>>> // Once again avoid having to allocate memory explicitly
>>>>> // Point bufferr at the address of an array of 256 characters
>>>>>   bufferr := PChar(@buffdata);
>>>>>
>>>>>   receive:=API_PCDRead(0,0,$00,10,1,key,bufferr);
>>>>>
>>>>>   ...
>>>>>
>>>>> Cheers,
>>>>> Carl
>>>>>
>>>>> On Thu, May 28, 2015 at 11:33 AM, Marshland Engineering <
>>>>> marshland at marshland.co.nz> wrote:
>>>>>
>>>>>> Thanks for the replies.
>>>>>>
>>>>>> this is the line
>>>>>>
>>>>>> >   receive:=API_PCDRead(0,0,$00,10,1,key,bufferr);
>>>>>>
>>>>>> I'm way out my depth with the workings of this function. I just do
>>>>>> simple
>>>>>> coding - A ex dBase3 programmer.
>>>>>>
>>>>>> I took the sample code that the RFID supplier gave, stripped off
>>>>>> everything I
>>>>>> didn't need other than the read line for RFID card and then copied
>>>>>> the bits
>>>>>> into my program which now crashes.
>>>>>>
>>>>>> I was wondering if the XPMENU call or something like that is
>>>>>> interfering with
>>>>>> other modules ?
>>>>>>
>>>>>> My debugging is limited to finding the line with the error.
>>>>>>
>>>>>> Both programs are run in Delphi 6, same machine and same environment.
>>>>>>
>>>>>> I can't find how to code this, where ever I put it, it crashes. -
>>>>>> Expected
>>>>>> expression but ARRAY found.
>>>>>>
>>>>>>    const
>>>>>>      KEY = array[0..6] of Byte = ($FF,$FF,$FF,$FF,$FF,$FF,$00);
>>>>>>
>>>>>> Thanks Wallace.
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> NZ Borland Developers Group - Delphi mailing list
>>>>>> Post: delphi at listserver.123.net.nz
>>>>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>>>>> Unsubscribe: send an email to delphi-request at listserver.123.net.nz
>>>>>> with Subject: unsubscribe
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> NZ Borland Developers Group - Delphi mailing list
>>>>> Post: delphi at listserver.123.net.nz
>>>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>>>> Unsubscribe: send an email to delphi-request at listserver.123.net.nz
>>>>> with Subject: unsubscribe
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> NZ Borland Developers Group - Delphi mailing list
>>>> Post: delphi at listserver.123.net.nz
>>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>>> Unsubscribe: send an email to delphi-request at listserver.123.net.nz
>>>> with Subject: unsubscribe
>>>>
>>>
>>>
>>> _______________________________________________
>>> NZ Borland Developers Group - Delphi mailing list
>>> Post: delphi at listserver.123.net.nz
>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>> Unsubscribe: send an email to delphi-request at listserver.123.net.nz with
>>> Subject: unsubscribe
>>>
>>
>>
>> _______________________________________________
>> NZ Borland Developers Group - Delphi mailing list
>> Post: delphi at listserver.123.net.nz
>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>> Unsubscribe: send an email to delphi-request at listserver.123.net.nz with
>> Subject: unsubscribe
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserver.123.net.nz/pipermail/delphi/attachments/20150528/932ebcf4/attachment.html 


More information about the Delphi mailing list