Цитата:
|
Опиши какими символьными типами ты пользуешься для хранения-передачи данных, и кусок кода покажи, где у тебя не получается выцепить данные правильно. ИМХО тут в типе STRING заморочка.
|
в буфер я копирую текст так:
Код:
Clipboard.SetTextBuf(PChar( eBuilding.Text+#9+#9+AnsiUpperCase(cbStreetsList.Text)+#9+#9+AnsiUpperCase(cbCitiesList.Text)+#9+#9+eIndex.Text+#10#13))
соответвственно, все типы - String.
по два #9 - это так и надо, ибо надо вставлять данные в поля через 2
для проверки того, как передаются поля из Excel'a в буфер и из моей проги, использовал следующий код:
Код:
procedure TZipForm.Button2Click(Sender: TObject);
var
MyHandle: THandle;
TextPtr: PChar;
MyString,S: string;
i:Integer;
begin
ClipBoard.Open;
try
MyHandle := Clipboard.GetAsHandle(CF_TEXT);
TextPtr := GlobalLock(MyHandle);
MyString := StrPas(TextPtr);
GlobalUnlock(MyHandle);
finally
Clipboard.Close;
end;
if Clipboard.HasFormat(CF_TEXT) then
S:='';
lFullStreet.Caption:=MyString ;
for i:=1 to length(MyString)
do S:=S+IntToStr(Ord(MyString[i]))+' ';
lFullStreet.Caption:=S;
end;
анализирует содержимое буфера по нажатию клавиши, в результате в строку S передается через пробел ASCII коды того, что есть в буфере (может проблема в том, что текст в буфере НЕ надо принимать за текст?). анализ этого показывает, что моя программа и Excel передают данные в одинаковом формате... но вот другая прога (куда их вставляют) понимает их по-разному...
Цитата:
ЧересЧеловек:
'text1'+'#9'+'text2'+'#10#13'
|
тогда просто в буфере будет строка 'text1#9text2#10#13'
Цитата:
ЧересЧеловек:
и вставлял в офис2003
|
мне нужно не в офис вставлять, а в другую прогу! (офис сам пробелы или Tab заменяет на некий разделитель ячеек), мне нужно сделать такое содержимое буфера, как будто эти данные были переданы из офиса!