![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток. Я пытаюсь обработать через PWideChar строку, которая больше, чем 2048 символов. И она обрезается. Пример:
Код:
'-Xms256m -Xmx512m...многотекста...libraries\org\apache\commons\commons-lang3\3.1\commons-lan'#$0600 Последний раз редактировалось serega6531, 02.12.2013 в 21:48. |
|
#2
|
||||
|
||||
|
Цитата:
|
|
#3
|
||||
|
||||
|
Цитата:
Последний раз редактировалось Freeman, 03.12.2013 в 04:36. |
|
#4
|
|||
|
|||
|
Нет, в файл нельзя. Код:
Код:
procedure ExecuteMinecraft(MinecraftData: TMinecraftData);
var
lpDirectory, lpFile, lpParameters: PWideChar;
si:TStartupInfo;
pi:TProcessInformation;
begin
with MinecraftData do
begin
lpDirectory := PWideChar(MinePath);
lpParameters := PWideChar(
//'-Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true ' +
'-Xms' + Xms + 'm ' +
'-Xmx' + Xmx + 'm ' +
'-Djava.library.path="' + NativesPath + '" ' +
'-cp "' + CP + '" ' +
'net.minecraft.client.main.Main ' + LogonInfo
{
'net.minecraft.launchwrapper.Launch' + LogonInfo +
' --tweakClass cpw.mods.fml.common.launcher.FMLTweaker'
}
);
lpFile := PWideChar(Java + '\javaw.exe');
end;
ShellExecuteW(0,nil,lpFile,lpParameters,lpDirectory,SW_SHOWNORMAL);
//CreateProcessW(PWideChar('"' + MinecraftData.Java + '\javaw.exe"'),lpParameters, nil, nil, false, NORMAL_PRIORITY_CLASS,nil, nil, si, pi);
end;
procedure PlayMinecraft(servername:string;auth:TAuthManager);
var
FileList: TStringList;
I: Word;
CP: string;
MinecraftData: TMinecraftData;
begin
FileList := TStringList.Create;
CheckFolder(settings.MinecraftDir+'libraries\', '*.jar', FileList);
CheckFolder(settings.MinecraftDir+'dists\' + servername + '\', '*.jar', FileList);
CP := '';
for I := 0 to FileList.Count - 1 do
begin
CP := CP + FileList.Strings[i] + ';';
end;
MinecraftData.Minepath := settings.MinecraftDir;
MinecraftData.Java := getJavaPath();
MinecraftData.Xms := settings.MinMem;
MinecraftData.Xmx := settings.MaxMem;
MinecraftData.NativesPath := settings.MinecraftDir + 'dists\' + servername + '\natives';
MinecraftData.CP := CP;
MinecraftData.LogonInfo := '--username ' + auth.getLogin() + ' ' +
'--session ' + auth.getParams() + ' ' +
'--version 1.6.4 ';
ExecuteMinecraft(MinecraftData);
FreeAndNil(FileList);
ExitProcess(0);
end; |
|
#5
|
||||
|
||||
|
Путь до папки майнкрафта полный задается? Вроде бы можно так написать: %APPDATA%\.minecraft
|
|
#6
|
|||
|
|||
|
Не уверен, могу попробовать позже
|
|
#7
|
||||
|
||||
|
Вроде наблюдается лишнее преобразование типов, например
Код:
lpParameters := PWideChar(...); Код:
lpParameters := '-Xms' + PWideChar(Xms) + 'm '+ PWideChar(LogonInfo); Добавлено позже Плохой совет, не проверив ляпнул, извнт. Всё вроде сложнее - это одна из хреновостей делфи при работе с UNICODE. Получилось так, принимается что Xms и LogonInfo типа string Код:
lpParameters := PWideChar('-Xms' + WideString(Xms) + 'm ' + WideString(LogonInfo));Последний раз редактировалось Alegun, 03.12.2013 в 10:30. Причина: LMD |
|
#8
|
||||
|
||||
|
Цитата:
Я только что проверил - действительно так и есть. А вот у CreateProcess ограничение в районе 32768 (тоже проверил) - так что для обхода этого ограничения испльзуй CreateProcess вместо ShellExecute. UPD. А вот здесь перевод той статьи из блога Реймонда Чена. Последний раз редактировалось poli-smen, 03.12.2013 в 12:04. |
|
#9
|
|||
|
|||
|
Цитата:
Код:
...commons\commons-lang3\3.1\commons-lanᤀᓉᥔᓉᖚ Код:
lpParameters := PWideChar(
//'-Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true ' +
'-Xms' + WideString(Xms) + 'm ' +
'-Xmx' + WideString(Xmx) + 'm ' +
'-Djava.library.path="' + WideString(NativesPath) + '" ' +
'-cp "' + WideString(CP) + '" ' +
'net.minecraft.client.main.Main ' + WideString(LogonInfo)
{
'net.minecraft.launchwrapper.Launch' + LogonInfo +
' --tweakClass cpw.mods.fml.common.launcher.FMLTweaker'
}
); |
|
#10
|
|||
|
|||
|
Цитата:
Забыл сказать, у меня delphi XE5. |
|
#11
|
|||
|
|||
|
Цитата:
Забыл сказать, у меня delphi XE5. |
|
#12
|
|||
|
|||
|
Цитата:
Забыл сказать, у меня delphi XE5. |
|
#13
|
|||
|
|||
|
Цитата:
Забыл сказать, у меня delphi XE5. |
|
#14
|
||||
|
||||
|
Цитата:
|
|
#15
|
|||
|
|||
|
Ой, зависло и много собщений отправилось.
Цитата:
|