If instead of using a const statement, I have the string in a
variable, then it works ... but this doesn't help me reproduce the
original problem, because there the string is on a variable too, and
not a const statement .... going back to the original app
Output of printing the string byte-by-byte in hexadecimal
*****************************************************************************
* *
* This demonstration program is public domain, which means no copyright, *
* but also no warranty! *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
program carbontest;
{ Functions to easely generate carbon structures }
function GetQDRect(Left, Top, Width, Height: Integer): FPCMacOSAll.Rect;
begin
result.Left := Left;
result.Top := Top;
result.Right := Left + Width;
result.Bottom := Top + Height;
end;
{ Shows a message box }
procedure DoShowMessage(ATitle, AMsg: string);
var
outItemHit: SInt16;
err: OSErr;
begin
err := StandardAlert(kAlertNoteAlert, ATitle, AMsg, nil, outItemHit);
end;
{ Event handling routines }
function ButtonHelloPressed: OSStatus;
begin
result := 0;
end;
function ButtonMessagePressed: OSStatus;
var
CFString: CFStringRef;
begin
CFString := CFStringCreateWithCString(nil, PChar(MyUTF8String),
kCFStringEncodingUTF8);
SetWindowTitleWithCFString(MainWindow, CFString);
CFRelease(CFString);
result := 0;
end;
{ Message handling function }
function WindowCommandHandler(nextHandler: EventHandlerCallRef;
theEvent: EventRef; userDataPtr: UnivPtr): OSStatus;
var
status: OSStatus;
ignoreresult: OSStatus;
aCommand: HICommand;
begin
status := eventNotHandledErr;
if aCommand.commandID = FOUR_CHAR_CODE(kButtonHello) then status :=
ButtonHelloPressed()
else if aCommand.commandID = FOUR_CHAR_CODE(kButtonMessage) then
status := ButtonMessagePressed();
result := status;
end;
{ Initialization and finalization routines }
procedure Initialize;
var
status, ignoreResult: OSStatus;
cmdEvent: EventTypeSpec;
eventHandler: EventHandlerUPP;
fontStyle: ControlFontStyleRec;
begin
status := CreateNewWindow(kDocumentWindowClass,
(kWindowStandardDocumentAttributes or kWindowStandardHandlerAttribute
or kWindowCompositingAttribute),
GetQDRect(100, 100, 350, 350), mainWindow);
if (status <> noErr) or (mainWindow = nil) then
begin
DoShowMessage('Error', 'CreateNewWindow failed');
Exit;
end;
{ Closes all windows, so they have time to save any user data (none in
this case) }
procedure Finalize;
begin
DoCloseWindow(mainWindow);
end;
{ Main program section }
begin
{ Initializes the string with UTF-8 characters }
MyUTF8String := 'Texto ł ñ ø ß á';
{ Prints the string byte-by-byte }
WriteLn('Printing string values');
WriteLn('Length: ', Length(MyUTF8String));
for i := 1 to Length(MyUTF8String) do
Write(IntToHex(Integer(MyUTF8String[i]), 2) + ' ');
WriteLn('');
{ Usual software startup }
Initialize();
RunApplicationEventLoop();
Finalize();
end.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Carbon-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/carbon-dev/email@hidden
This email sent to email@hidden