घर
Top.Mail.Ru Yandeks.Metrika
मंच: "शुरुआती";
वर्तमान संग्रह: 2018.03.18;
डाउनलोड करें: [xml.tar.bz2];

नीचे

कमांड लाइन इसी तरह की शाखाएँ खोजें


chuxlo ©   (2016-04-02 18:22) [0]

प्रोग्राम में, आपको कमांड लाइन मापदंडों को लेने की आवश्यकता है। एक लूप में, पैरामाउंट का उपयोग करके मैंने चर (ParamStr (n)) के मूल्यों को पढ़ा। जब मैं डेल्फी से शुरू करता हूं, तो पैरामीटर लाइन को भरने के बाद, मुझे प्रोग्राम में उन सभी को मिलता है। जब मैं इसे वास्तविक जीवन में चलाता हूं (यानी, मैं अपने प्रोग्राम को mpxnumx फ़ाइलों के साथ जोड़ता हूं। मैं फ़ाइलों के एक समूह का चयन करता हूं और कार्यक्रम में स्थानांतरित करता हूं
कार्यक्रम में मुझे मापदंडों में केवल एक फ़ाइल मिलती है। कहाँ खोदना है?



Dimka Maslov ©   (2016-04-02 19:24) [1]

व्यक्तिगत रूप से, इस मामले में, मुझे एक्सटेंशन से जुड़े एप्लिकेशन के कई उदाहरण मिलते हैं। प्रत्येक उदाहरण में एक फ़ाइल स्थानांतरित की जाती है। और फिर आप पहले से ही एक प्रतिलिपि में फ़ाइलों को एकत्र कर सकते हैं।



chuxlo ©   (2016-04-02 19:40) [2]

मुझे नहीं लगता कि यह कोई रास्ता है। यदि निर्देशिका में कई दर्जन फाइलें हैं, तो मुझे इसकी आवश्यकता नहीं है
आवश्यक फ़ाइल प्रकार के साथ जुड़े कार्यक्रम के कई दर्जन उदाहरण होंगे।



Dimka Maslov ©   (2016-04-02 19:59) [3]


> मुझे नहीं लगता कि यह कोई रास्ता है


वेन्डा ऐसा करता है - वह कई उदाहरण खोलता है।



chuxlo ©   (2016-04-02 20:08) [4]

मैं इस दिशा में अच्छा सोचूंगा। लेकिन क्या यह वास्तव में है कि जब 50 का चयन किया जाता है, तो MP3 खुला होता है
WinAmp के 50 उदाहरण



Pavia ©   (2016-04-02 20:27) [5]

एक्सप्लोरर कई कार्यक्रम शुरू करता है।
प्रत्येक प्रोग्राम में, यह इस फ़ाइल द्वारा प्रसारित होता है। आपका कोड एक नाम म्यूटेक्स बनाता है। म्यूटेक्स उसी द्वारा बनाया जाता है जिसने पहले शुरू किया था, बाकी की जाँच करें कि वह है या नहीं। यदि नहीं, तो वह पहला है।
अगर वहाँ है, तो हम IPC इंटरप्रोसेस संचार का उपयोग करते हैं। प्रोजेक्ट फ़ाइल के माध्यम से सबसे लोकप्रिय है। लेकिन आपके मामले में, एक मेलबॉक्स बेहतर है।
https://ru.wikipedia.org/wiki/Межпроцессное_взаимодействие

हम इस बॉक्स के माध्यम से अपने मापदंडों को मुख्य कार्यक्रम में स्थानांतरित करते हैं।
इसके अलावा, जब रसीद की पुष्टि हो। अतिरिक्त प्रतियां बंद हो जाती हैं, केवल पहला अवशेष रहता है, यह मुख्य है।

और ध्यान रखें कि म्यूटेक्स बनाते समय, नोटों में वर्णित कई विशेषताएं हैं।
https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms682411(v=vs.85).aspx



chuxlo ©   (2016-04-02 20:35) [6]

पाविया को धन्यवाद। मैं जानकारी चबाऊंगा।



Dmk ©   (2016-04-03 00:13) [7]

क्या .... कमांड लाइन पार्सिंग प्रक्रिया डिबगिंग के साथ एक घंटे में लिखी जाती है। शुरुआत के लिए अधिकतम 2-3। क्या म्यूटेक्स?!?!?



Leonid Troyanovsky ©   (2016-04-03 09:56) [8]


> Dmk © (03.04.16 00: 13) [7]

> क्या…।

टीएस एक्सप्लोरर से फाइलों का एक समूह प्राप्त करना चाहता है।
यानी, http://delphimaster.net/view/4-1102448133 जैसा कुछ

--
सादर, LVT



Dmk ©   (2016-04-03 14:00) [9]

> लियोनिद ट्रायोनोव्स्की © (03.04.16 09: 56) [8]
हां, मैं देख रहा हूं। यह स्पष्ट नहीं है कि दोहरे और एकल कोष्ठक से मिलकर एक स्ट्रिंग को पार्स करने में क्या जटिल है। मैं इसे पोस्ट करूंगा, लेकिन मैं एक फ्रीबी नस्ल नहीं बनाना चाहता। वहाँ सिर एक घंटे अधिकतम समय लगता है। मेरे पास 100 + फाइलें हैं, जो बिना किसी समस्या के, कमांड लाइन से, यहां तक ​​कि WM_DROPFILES के साथ भी खुली हैं।



chuxlo ©   (2016-04-03 18:06) [10]

द्रमुक! समस्या यह नहीं है कि मैं कमांड लाइन को पार्स नहीं कर सकता। चयनित फ़ाइलों के एक समूह के बजाय, मुझे पार्स करने के लिए कुछ भी नहीं मिलता है।



Dmk ©   (2016-04-03 21:48) [11]

> [एक्सएनयूएमएक्स] खराब। दस्तावेज़ को बहुत आलसी पढ़ें।

प्रक्रिया में प्रवेश करने से पहले सरणी को आरंभीकृत किया जाना चाहिए।
मुझे आशा है कि आप इसे अपने लिए संशोधित कर सकते हैं।

procedure ParseParamStr(var AFiles: TFilesList);
var
 lpI: integer;
 lpComLine: string;
 lpComLen: integer;
 lpPos: integer;
 lpNDQ: integer;
 lpChar: char;
 lpZeroStr: string;
 lpNextStr: string;
 lpS: string;
 lpEndLen: integer;
 lpZB: boolean;

const
 lcDQ = #34;//"
 lcSQ = #39;//"
 lcBadChars: set of AnsiChar = [ #34, #39];

 function CharPossible(AChar: char): boolean;
 begin
   Result := not (CharInSet(AChar, lcBadChars));
 end;

begin
 lpComLine := GetCommandLine;
 lpComLen := Length(lpComLine);

 //Отладка
 //InfoMessage(0, lpComLine + " (Длина = " + IntToStr(lpComLen) + ")");

 lpNDQ := 0;
 lpPos := 0;
 lpZB := False;

 //Извлекаем нулевой параметр
 //Признак начала и конца нулевого параметра - двойные кавычки -> "ZeroStr"
 for lpI := 1 to lpComLen do
 begin
   lpChar := lpComLine[lpI];
   if lpChar = lcDQ then
   begin
     Inc(lpNDQ);
     lpZB := not lpZB; //Включим флаг открытых скобок
   end;

   //Длина нулевого параметра с кавычками
   //Потребуется для дальнейшего разбора строки
   Inc(lpPos);

   //Если скобка открыта
   if lpZB then
   begin
     //и символ не равен кавычкам
     if (lpChar <> lcSQ) and (lpChar <> lcDQ) then
       lpZeroStr := lpZeroStr + lpChar; //Извлекаем нулевую строку
   end;
   //Выйдем из цикла в конце нулевого параметра
   if (lpChar = lcDQ) and (lpZB = False) then Break;
 end;//for

 //Проверим на первый пробел
 lpChar := lpComLine[lpPos + 1];
 if lpChar = MSG_SPACE then Inc(lpPos, 2); //Начальная позиция остатков строки параметров

 //Следующая строка.
 //Может состоять из нескольких параметров
 lpNextStr := MSG_EMPTY;
 lpEndLen := 0;

 //Копируем остаток для дальнейшего разбора
 for lpI := lpPos to lpComLen do
 begin
   lpChar := lpComLine[lpI];
   lpNextStr := lpNextStr + lpChar;
   Inc(lpEndLen);
 end;

 lpS := MSG_EMPTY;
 //Разбираем остатки строки
 //с проверкой на присутствие файла
 for lpI := 1 to lpEndLen do
 begin
   lpChar := lpNextStr[lpI];

   if lpI = lpEndLen then
   begin
     //Последний символ
     if CharPossible(lpChar) then lpS := lpS + lpChar;
     if FileExist64(lpS) then
     begin
       AFiles.AddRecord(lpS);
       Break;
     end;
   end;

   //Если пробел, то возможно это конец параметра
   //Проверим есть ли такой файл
   if lpChar = MSG_SPACE then
   begin
     //Если файл есть, то добавим его в список файлов
     if FileExist64(lpS) then
     begin
       AFiles.AddRecord(lpS);
       lpS := MSG_EMPTY;
     end
     else
     begin
       //Иначе продолжаем разбирать строку
       if CharPossible(lpChar) then lpS := lpS + lpChar;
     end;
   end //if lpChar = MSG_SPACE
   else
   begin
     if CharPossible(lpChar) then lpS := lpS + lpChar;
   end;
 end;//while
end;



Dmk ©   (2016-04-03 21:51) [12]

यह FileExist64 प्रक्रिया का उपयोग करता है। मुझे आशा है कि आप इसे स्वयं लागू कर सकते हैं?
जानकारी के लिए: मैं एक प्रोग्रामर बिल्कुल नहीं हूँ।



chuxlo ©   (2016-04-03 22:11) [13]

द्रमुक! अब आपने जो प्रस्ताव दिया है, उससे मैं निपटूंगा। कल जवाब होगा।



Dmk ©   (2016-04-03 22:28) [14]

> आपके द्वारा प्रस्तावित के साथ
मैंने कुछ भी पेश नहीं किया। बस आत्मा की दया से साझा किया गया।



chuxlo ©   (2016-04-03 22:47) [15]

द्रमुक! मैंने सत्य की जाँच की, सभी कोड नहीं, बल्कि ShowMessage का उपयोग करके एक हिस्सा लाया
lpComLine को केवल एक फ़ाइल मिली, हालांकि इसने चयनित समूह को कार्यक्रम में स्थानांतरित कर दिया।



Dmk ©   (2016-04-03 23:17) [16]

आपने कैसे संचारित किया? कहाँ तक? कोड दिखाओ।



chuxlo ©   (2016-04-03 23:25) [17]

फार्म के onShow घटना में
...
था
एन: पूर्णांक;
शुरू करना
n के लिए: = 1 को paramCount करते हैं
listbox1.items.add (paramStr (n));
अंत;
...
सिस्टम में मैं अपने प्रोग्राम के साथ mp3 फाइलों को जोड़ता हूं। मैं विंडोज में एक ग्रुप का चयन करता हूं
mp3 और उन्हें खोलें। नतीजतन, मेरा कार्यक्रम केवल एक फ़ाइल का नाम प्रदर्शित करता है। चयनित समूह कैसे प्राप्त करें।



Dmk ©   (2016-04-04 00:13) [18]

डेल्फी संस्करण को फेंक दें। वह कुटिल है।

FilesList: = TStringList.Create; ParseParamStr (FilesList); // यदि मापदंडों की एक पंक्ति है, तो फाइलें खोलें अगर FilesList.GetCount <> 0 तो OpenMyFiles (FilesList); // सूची की अब आवश्यकता नहीं है FilesList.Free;

लाइन ब्रेक प्रक्रिया में, AFiles.AddRecord (lpS) को बदलें; FilesList.Add (lpS) पर;



Dmk ©   (2016-04-04 00:17) [19]

FileExists प्रक्रिया:

फ़ंक्शन FileExist64 (FileName: string): बूलियन; वर lpFD: _WIN32_FIND_DATAW; एलपीएच: थैंडल; शुरू करना lpH: = FindFirstFile (PWideChar (FileName), lpFD); अगर lpH = INVALID_HANDLE_VALUE परिणाम: = और गलत परिणाम: = सत्य; यदि परिणाम है शुरू करना // फाइल को डायरेक्टरी या डिवाइस नहीं होना चाहिए // भी छिपाया नहीं जा सकता अगर (lpFD.dwFileAttributes = FILE_ATTRIBUTE_ARCHIVE) या (lpFD.dwFileAttributes = FILE_ATTRIBUTE_NORMAL) फिर परिणाम: = गलत; अंत; WinApi.Windows.FindClose (lpH); अंत;



Dmk ©   (2016-04-04 00:19) [20]

मैंने सिर्फ फाइलों की सूची के लिए अपनी कक्षा लिखी। और भी विकल्प हैं।
मेरी कक्षा को एक TStringList से बदलें और वह यह है। आप खुश रहेंगे।



chuxlo ©   (2016-04-04 00:22) [21]

द्रमुक! अब मैं कोशिश करूंगा। जवाब कल होगा। विषय में भाग लेने के लिए धन्यवाद।



QAZ   (2016-04-04 17:04) [22]

[8] में सही उत्तर है, इसलिए डॉल्फि उपरोक्त गोपनीयता में काम करता है
dmk को यह समझ में नहीं आया कि यह क्या था, इस पर समय बर्बाद मत करो



पन्ने: 1 पूरी शाखा

मंच: "शुरुआती";
वर्तमान संग्रह: 2018.03.18;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.64 एमबी
समय: 0.023 c
2-1459355702
अफ्रीका का लंगूर
2016-03-30 19:35
2018.03.18
TreeView


2-1459159042
थीड
2016-03-28 12:57
2018.03.18
केवल बटन के साथ DBGridEh सेल का संपादन


2-1459026105
lewka
2016-03-27 00:01
2018.03.18
बफर प्रोटोकॉल


2-1459610574
chuxlo
2016-04-02 18:22
2018.03.18
कमांड लाइन


8-1243716518
v1ctar
2009-05-31 00:48
2018.03.18
छवि प्रसंस्करण। विभाजन।





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский