Имя: Пароль:
1C
1С v8
Как получить дескриптор файла
0 alexei366
 
14.08.12
22:54
Помогите получить дескриптор файла, мне он нужен как параметр для ComОбъекта, на уровне 1С такой возможности не нашёл, так подозреваю надо какой-то другой ComОбъект использовать, но чето в нете не нашёл.
1 andrewks
 
14.08.12
22:57
дескриптор файла обычно получают в результате его открытия
2 alexei366
 
14.08.12
22:58
Это я знаю, но что использовать в 1С для его получения?
3 andrewks
 
14.08.12
23:00
думаю, вызов WinAPI
4 alexei366
 
14.08.12
23:00
Не нашёл какой комобъект запускать для FileOpen(...)
5 andrewks
 
14.08.12
23:03
ты что за ком-объект используешь? пошукай там в методах, если разраб не тупица, должен был описать метод и для открытия файла по имени
6 andrewks
 
14.08.12
23:04
а так, если совсем всё хреново - DynamicWrapperX
7 alexei366
 
14.08.12
23:05
mista.ru/topic.php?id=621703
8 alexei366
 
14.08.12
23:05
а по поводу DynamicWrapperX покажешь пример на 1С конкретно для FileOpen()
9 andrewks
 
14.08.12
23:07
(7) не вижу там дескриптора файла
10 H A D G E H O G s
 
14.08.12
23:07
(8) А самому попробовать.
Попробовать пролить немного пота, слюны и прочих самцовых жидкостей, а не получить на блюдечке?
11 alexei366
 
14.08.12
23:08
КомОб.RecogDIBtoFile(ДвДанные,"C:\3\2.txt",2,1);  заместо ДвДанные должен быть дескриптор
12 andrewks
 
14.08.12
23:08
+(10) выпить попутно баночку пива :)
13 andrewks
 
14.08.12
23:09
(11) дескриптор не файловый, а на блок памяти. не путай тёплое с мягким
14 H A D G E H O G s
 
14.08.12
23:09
(13) Откуда дрова?
15 H A D G E H O G s
 
14.08.12
23:10
Че за компонента?
16 andrewks
 
14.08.12
23:10
+(13) хотя, в некоторых терминах, выделенная область памяти - тоже файл. но не будем о грустном
17 andrewks
 
14.08.12
23:10
18 alexei366
 
14.08.12
23:10
Я и так уже устал пока с комом эти бился, я то думал мож ктото получал дескриптор, вот и покажут добрые люди
19 andrewks
 
14.08.12
23:11
(18) ответ в (6) и гугле
20 alexei366
 
14.08.12
23:13
Помогите колеке дескриптор получить
21 H A D G E H O G s
 
14.08.12
23:13
(19) Товарисчь заиметься создавать DIB объект через WinAPI, а также корректно отработать GlobalAlloc и блокировку памяти. Бугага. Особенно через DynWrap
22 H A D G E H O G s
 
14.08.12
23:14
(20) Тебе все сказали в (17).
Пиши COM-сервер - оболочку на Дельфи.

Там вообще готовый класс для работы с DIB есть.
23 alexei366
 
14.08.12
23:15
ну хоть ссылку дай (желательно с примером на 1С)
24 alexei366
 
14.08.12
23:16
На делфях никогда не писал, и блин из-за дескриптора ща в такую попу лезть не хочу
25 H A D G E H O G s
 
14.08.12
23:19
(23) Нету ссылок. Никто такого думаю не делал.
26 andrewks
 
14.08.12
23:20
(21) сделать GlobalAlloc  - не проблема. в остальном... DIB - это обычный BMP. ну, можно попробовать поизвращаться с олесэйфаррэем, но тут в результате не уверен
27 H A D G E H O G s
 
14.08.12
23:20
Как сильна тяга к халяве.
28 alexei366
 
14.08.12
23:21
Блин, как-то не радостно, но а хоть пример по кому который использует FileOpen() есть пример?
29 andrewks
 
14.08.12
23:21
(27) одинесник же
30 H A D G E H O G s
 
14.08.12
23:23
(26) угу, угу.
Вон, смотри в (28).
Автор еще до сих пор в FileOpen()
31 alexei366
 
14.08.12
23:24
Я даже не знаю, есть у вас ещё мысли как это сделать или уже только глумить будите?
32 H A D G E H O G s
 
14.08.12
23:25
(31) Скорее всего только глумить, ибо делать достаточно долго даже мне. И лениво.
33 andrewks
 
14.08.12
23:25
(31) тебе уже всё сказали. хочешь готовое решение - обратись к (30), он за деньги сделать может, если согласится
34 alexei366
 
14.08.12
23:29
ну не фиг себе за деньги дескриптор, это как-то не полюдски. А насчет долго, даж не знаю как-то непонятно
35 H A D G E H O G s
 
14.08.12
23:37
В Дельфи я бы сделал так

procedure TForm2.Button1Click(Sender: TObject);
var DIB:TBitmap;
MemStream:TMemoryStream;
HmemAlloc:Cardinal;
DataPtr:Pointer;
begin
DIB:=TBitmap.Create;
DIB.LoadFromFile('c:\lightporno.bmp');
MemStream:=TMemoryStream.Create;
DIB.SaveToStream(MemStream);
DIB.Free;
HmemAlloc:=GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE,MemStream.Size);
try
DataPtr:=GlobalLock(HmemAlloc);
try
Move(MemStream.Memory^,DataPtr^,MemStream.Size);
//HmemAlloc ВОТ ОН, ВОТ ОН, Дескриптор ТВОЕЙ МЕЧТЫ!
finally
GlobalUnlock(HmemAlloc);
end;
except
GlobalFree(HmemAlloc);
raise;
end;

end;
36 H A D G E H O G s
 
14.08.12
23:39
Отлаживай, пиши, развивайся. Пинок дан.
37 alexei366
 
15.08.12
00:33
На делфи, я и на си так могу