-
Постов
64 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные neo
-
-
И это все просто чтобы считать/записать строку?
ну да =)
вот так вызываю..
edit1.text:=StringOf(LoadData);
просто размер кажется большим из за того что каждую часть разнёс по функциям/процедурам
тк они используются ещё и для других целей
И это все просто чтобы считать/записать строку?
если ты умеешь делать это одной строкой то можешь поделится =)
-
строку в файл сохраняю вот так
procedure WriteStreamStr(Stream: TStream; Str: string); var StrLen: Integer; begin StrLen:=Length(Str); Stream.WriteBuffer(StrLen,SizeOf(Integer)); if StrLen>0 then Stream.Write(Str[1], StrLen); end; procedure SaveData(Info: String); var Stream: TMemoryStream; begin Stream:= TMemoryStream.Create; try Stream.Seek(0,soFromBeginning); WriteStreamStr(Stream,Info); Stream.SaveToFile('access.key'); finally Stream.Free; end; end;
-
Привет!
народ чего то не получается под андройдом из файла получить строку в нужной кодировке...
вот так получаю строку
function ReadStreamStr(Stream: TStream): String; var StrLen: Integer; begin Result:=''; Stream.ReadBuffer(StrLen,SizeOf(Integer)); SetLength(Result,StrLen); Stream.Read(Result[1],StrLen); end; function LoadData: String; var Stream: TMemoryStream; begin Stream:= TMemoryStream.Create; try Stream.LoadFromFile(TPath.GetDocumentsPath + PathDelim +'access.key'); Stream.Seek(0,soFromBeginning); Result:=ReadStreamStr(Stream); finally Stream.Free; end; end;
в LoadData строка
далее декодирую её
function StringOf(str: String): String; var Bytes: TBytes; begin Bytes := BytesOf(str); if Assigned(Bytes) then Result := TEncoding.ANSI.GetString(Bytes, Low(Bytes), High(Bytes) + 1) else Result := ''; end;
но всё равно килиберда получается =(
-
например при сворачивании/выходе из программы и прочие события из-за которых приложению нужно сохранить данные
onsavestate сработало спасибо! =) ото уже хотел каждый раз при изменении сохранять ini
-
OnClose попробуй или OnSaveState
onClose пробовал но для этого нужно в ручную выходить из программы
onsavestate не проверял... а когда оно происходит?
-
Привет!
столкнулся с небольшой проблемкой)
при закрытии программы сохраняю настройки в Ini файл
обычно делаю это на событии OnDestroy но в андройде это не работает
если находясь в программе войти в перезагрузку и перезагрузить телефон
ничего не сэйвится... и даже если сначала свернуть все приложения и потом перезагрузить...
добавление в Hide/Deactive тоже ничего не даёт
onClose работает - но для этого нужно в ручную выйти из программы
Может кто нибудь знает как это обойти?
-
-
Народ а как поменять разрешение получаемой картинки через CameraComponent?
по умолчанию получаю очень маленькую картинку... хотелось бы сделать её на весь экран =(
добавляю сюда CameraComponent1SampleBufferReady
CameraComponent1.Quality := TVideoCaptureQuality.highQuality; image.Width := image.Bitmap.Width; image.Height := image.Bitmap.Height;
но ничего не меняется =(
походу это можно делать только в XE8 а у меня XE7
и использовать нужно CaptureSetting
-
Итак вот что получилось
//сдвинуть выделенный пункт вверх
procedure TForm1.Up1Click(Sender: TObject);
begin
if Assigned(ListBox1.Selected) and (listbox1.Selected.index>=1) then
ListBox1.ItemsExchange( ListBox1.ItemByIndex(listbox1.Selected.index), ListBox1.ItemByIndex(listbox1.Selected.index-1) );
end;//сдвинуть выделенный пункт вниз
procedure TForm1.Down2Click(Sender: TObject);
var
NextItem: Integer;
begin
if Assigned(ListBox1.Selected) and (listbox1.Selected.index<ListBox1.Items.Count-1) then
begin
NextItem:=Listbox1.Selected.Index+1;
ListBox1.ItemsExchange( ListBox1.ItemByIndex(listbox1.Selected.index), ListBox1.ItemByIndex(listbox1.Selected.index+1) );
Listbox1.ClearSelection; //к сож. нужно добавить ClearSelection и NextItem иначе идёт мультиселект
listbox1.ItemIndex:=NextItem;
end;
end; -
1. Все контролы в ФМ являются контейнерами.
2. Итемы внутр листбокса являются контролами, а значит и контейнерами, следовательно вы можете делать там внутри что угодно хоть колонки, хоть кружочки, хоть что...
3. поменять местами итемы можно так:
ListBox1.ItemsExchange( ListBox1.ItemByIndex(0), ListBox1.ItemByIndex(1) );
4. Чтобы в Листбокс итеме поменять текст, нужно поменять его паблишед свойство Text, делается это так:
ListBox1.ItemByIndex(1).Text := '123';
ага отлично) самое главное что точно также пытался менять через ItemsExchange но ошибку выдавал.. наверно где-то была тупая опечатка
а у ListView как? не знаете? там нету ItemsExchange
мне на ум только такая ерунда приходит:
Litem:=ListView1.Items.Insert(ListView1.Selected.Index-1);
LItem.Text:=listview1.Items.Item[ListView1.Selected.Index].Text;
LItem.Detail:=listview1.Items.Item[ListView1.Selected.Index].Detail;
Listview1.Items.Delete(ListView1.Selected.Index);
это чтоб пункт вверх сдвинуть ну и соответственно вниз то плюс
-
во первых колонки есть! смотреть внимаельно в опциях TListBox
Columns = 1, поменяй на 2
для Add есть еще один способ, просто указать парент
LItem:=TListBoxItem.Create(nil); LItem.Parent := ListBox1; ...
для Delete
if Assigned(ListBox1.Selected) then ListBox1.Items.Delete(listbox1.Selected.index);
зачем нужно делать переименование??
а перемещение где-то было в стандартных демо если не ошибаюсь
это не те колонки) проверьте ... просто идёт размещение в две колоны.. а пункты раздельные... и выделение идёт раздельное...субитомов больше нету
а наличие я вот так проверяю: if not (Listbox1.Selected=nil) then
в ListView переименование легко делается... вот и хотел узнать как в ListBox
у меня XE7 в ней точно примеров нет как перемещать пункты...
и самое главное в ListView тоже не получается пункты сдвинуть
просто например мне в настройках нужно по желанию менять очередность пунктов
спасибо что ответили надеюсь подобные темы для начинающих будут развиваться
-
поддерживаю) тоже интересно как это реализовать
-
Здравствуйте товарищи знатоки!
Недавно решил перейти на Firemonkey чтоб создавать мобильные приложения...
но к сожалению обнаружил что работа в нём сильно отличается =( и информации в интернете очень мало...
и в дельфи демках тоже подобных примеров нету =(
не понимаю как можно узнать информацию если ты не работаешь в большом коллективе программистов у которых есть связь с западными колегами
которые участвовали в создании тех или иных компонентов...
сейчас я разбираюсь с ListBox
и хочу научится делать стандартные вещи....
например сначала я попытался создать 2 колонки как в VCL но оказалось так уже нельзя
пол дня шерстил интернет и методом тыка научился делать это через Detail ... ok! =)
Add:
добавлять пункты научился так
LItem:=TListBoxItem.Create(ListBox1)
...
ListBox1.AddObject(LItem);
Delete:
поскольку DeleteSelected больше нет
удаляю пункт сл образом
ListBox1.Items.Delete(listbox1.Selected.index)
но как проверить существует ли item?
иначе возникает ошибка когда удаляешь и ничего не выделено
Rename:
переименовать item не получается =(
разве что вставить пункт на место выделенного listbox1.InsertObject(... ,...);
а сл удалить
Move:
поменять позицию у выделенного пункта тоже не получается
Подскажите пожалуйста ответы на эти казалось бы простые вопросы!
думаю это поможет очень многим начинающим ФаерМанкерам =)
Кодировка под Android
в Работа с текстом
Опубликовано
это если файл просто текстовый... а у меня там сначала идёт размер строки... у меня в ключевой файл пишется несколько параметров типа IMEI итд