2015-05-11 7 views
0

Мне нужно сделать запятую, которая будет иметь несколько строковых значений, и каждое из этих значений должно быть в одной кавычки.QuotedStr заменяет двойную цитату в Delphi 2010

Когда я использую QuotedStr, он цитируется с двойной кавычкой, а не по одиночке.

Я даже пробовал использовать одиночную кавычку, но все же у нее такая же проблема.

Я пробовал поиск в Интернете, но не получил никакой информации.

Любые другие способы сделать это?

С уважением.

Вишал

+0

Нет, он обматывает строку одиночными кавычками. То, что вы можете увидеть, это две последовательные одинарные кавычки. – TLama

+0

Как я могу просто вставить одну цитату, например. 'abc', 'xyz', 'pqr'. Я либо получаю 'abc, xyz, pqr' или '' abc '', '' xyz '', '' pqr ''. Что мне делать, чтобы получить желаемый результат? –

+1

Похоже, вы соединяете эту цепочку сами; если это так, то просто конкатенируйте все его части и, наконец, оберните результат «QuotedStr». – TLama

ответ

2

QuotedStr добавляет единый знак кавычки в начале и в конце строки, переданной в качестве аргумента. Что может вводить в заблуждение, так это то, как отладчик показывает строки.

Например, следующий код

procedure TForm1.Button2Click(Sender: TObject); 
var 
    a, b, c, r: string; 
begin 
    a := 'A'; 
    b := 'B'; 
    c := 'C'; 
    r := QuotedStr(a) + ',' + 
     QuotedStr(b) + ',' + 
     QuotedStr(c); 
    Label2.Caption := r; // breakpoint here 
end; 

с точкой излома на последней строке показывает, что это в Local Variables панели:

enter image description here

но фактическая метка заголовка выглядит следующим образом:

enter image description here

Отладчик включает строки в одинарных кавычках для отображения, а поскольку ваши строки уже содержат одинарные кавычки, похоже, что будут двойные кавычки.


код, который Вы отправили в комментарии ...

procedure TForm9.Button2Click(Sender: TObject); 
var MyString : String; 
begin 
    //#44 
    MyString := QuotedStr('String1'); 
    MyString := MyString + ',' + QuotedStr('String2'); 
    ShowMessage(MyString); 
end; 

... производит этот результат:

enter image description here

и если сообщение расширяется с показывая длина, например:

ShowMessage(MyString + ' Length: ' + IntToStr(Length(MyString))); 

... он производит это:

enter image description here

Одинарные кавычки, длина, как и ожидалось.

+0

При отладке, когда я нажимаю на переменную и нажимаю Ctrl + F7, чтобы увидеть фактическое значение в переменной, она все еще отображается с двумя одинарными кавычками. –

+0

@VishalTiwari Как я уже сказал, это то, как отладчик показывает строки, находится ли он в окне «Evaluate/Modify», «Local/Variables *» или где-либо когда-либо. –

+0

Но мой компонент запроса возвращает нулевой счет после выполнения sql. –