![]() |
|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
![]() Цитата:
Не стоит путать форумы с богадельнями. © Bargest Последний раз редактировалось 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
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#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
|
|||
|
|||
![]() Ой, зависло и много собщений отправилось.
Цитата:
|