This is CCCCObject.m in view mode; [Download] [Up]
#import "CCCCObject.h"
@implementation CCCCObject
- (void)applicationDidFinishLaunching:(NSNotification *)notification
// In order for your object to receive this notification make sure that
// your object is a delegate or "File's Owner" in IB.
// Connected from "File's Owner" to MenuObject in this case.
{
[TheWindow makeKeyAndOrderFront:NULL];
[CCnumber selectText:self];
}
- (void)CheckIt:(id)sender
{
// This program is based on cc_cksum. Credit Card check sum program
// from 2600 magazine.
//
// Adapted for OpenStep by Eric Tremblay June 29, 1997
// Local Variables
const char *cc;
int check, len, prod, j;
// Assign the value in the panel to the cc variable.
cc = [[CCnumber stringValue] cString];
if (cc[0] != '3' && cc[0] != '4' && cc[0] != '5' && cc[0] != '6') {
[Status setStringValue:@"Card number must start with 3, 4, 5, or 6."];
[Status setTextColor:[NSColor purpleColor]];
[CCnumber selectText:self];
return;
}
// Counts the string length of the cc variable.
len = strlen(cc);
if (cc[0] == '5' && len != 16) {
[Status setStringValue:@"Mastercard must be 16 digits."];
[Status setTextColor:[NSColor orangeColor]];
[CCnumber selectText:self];
return;
}
if (cc[0] == '4' && (len != 13 && len != 16)) {
[Status setStringValue:@"Visa numbers must be 13 or 16 digits."];
[Status setTextColor:[NSColor orangeColor]];
[CCnumber selectText:self];
return;
}
if (cc[0] == '3' && len != 15) {
[Status setStringValue:@"American Express numbers must be 15 digits."];
[Status setTextColor:[NSColor orangeColor]];
[CCnumber selectText:self];
return;
}
if (cc[0] == '6' && len != 16) {
[Status setStringValue:@"Discover numbers must be 16 digits."];
[Status setTextColor:[NSColor orangeColor]];
[CCnumber selectText:self];
return;
}
// Perform checksum - Weighing list 212121212121...
check = 0;
for (j = 0; j < len; ++j) {
prod = cc[j] - '0';
if (((len - (j + 1)) %2)) {
prod *= 2;
}
if (prod >= 10) {
prod = prod - 9;
}
check += prod;
}
if ((check % 10) == 0) {
[Status setStringValue:@"Card has good checksum"];
[Status setTextColor:[NSColor greenColor]];
[CCnumber selectText:self];
} else {
[Status setStringValue:@"Card has BAD checksum"];
[Status setTextColor:[NSColor redColor]];
[CCnumber selectText:self];
}
}
- (void)InfoPanel:(id)sender
{
[NSBundle loadNibNamed:@"InfoPanel.nib" owner:self]; // load nib
}
- (void)IntroAndHelp:(id)sender
{
[NSBundle loadNibNamed:@"HelpIntro.nib" owner:self]; // load nib
}
- (void)MoreInfo:(id)sender
{
[NSBundle loadNibNamed:@"MoreInfo.nib" owner:self]; // load nib
}
- (void)ClearStatus:(id)sender
{
[Status setStringValue:@"Hello World!!!"];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.