คำถามติดแท็ก delphi

Delphi เป็นภาษาสำหรับการพัฒนาแอปพลิเคชัน Windows, macOS, Linux, iOS และ Android อย่างรวดเร็วผ่านการใช้ Object Pascal ชื่อนี้หมายถึงภาษาเดลฟีรวมถึงไลบรารีคอมไพเลอร์และ IDE ซึ่งใช้เพื่อช่วยแก้ไขและดีบักโปรเจ็กต์ Delphi

1
จะมีผลต่อการสร้างรหัส Delphi XEx สำหรับเป้าหมาย Android / ARM อย่างไร
อัพเดท 2017-05-17 ฉันไม่ทำงานให้กับ บริษัท ที่มีคำถามนี้มาแล้วและไม่สามารถเข้าถึง Delphi XEx ได้ ในขณะที่ฉันอยู่ที่นั่นปัญหาได้รับการแก้ไขโดยการโยกย้ายไปยัง FPC + GCC (Pascal + C) ผสมกับ NEON อินทรินซินส์สำหรับกิจวัตรบางอย่างที่สร้างความแตกต่าง (แนะนำให้ใช้ FPC + GCC เพราะช่วยให้สามารถใช้เครื่องมือมาตรฐานโดยเฉพาะอย่างยิ่ง Valgrind) หากมีใครสามารถสาธิตด้วยตัวอย่างที่น่าเชื่อถือว่าจริง ๆ แล้วพวกเขาสามารถสร้างรหัส ARM ที่ดีที่สุดจาก Delphi XEx ได้อย่างไรฉันยินดีที่จะตอบ . คอมไพเลอร์ Delphi ของ Embarcadero ใช้แบ็กเอนด์ LLVM เพื่อสร้างรหัส ARM ดั้งเดิมสำหรับอุปกรณ์ Android ฉันมีรหัส Pascal จำนวนมากที่ฉันต้องรวบรวมในแอปพลิเคชัน Android และฉันต้องการทราบวิธีการทำให้ Delphi สร้างรหัสที่มีประสิทธิภาพมากขึ้น …

2
เป้าหมายการสร้างแบบกำหนดเอง Delphi XE ถูกปิดใช้งานเสมอ
ฉันได้สร้าง.targetsไฟล์MSBuild ที่กำหนดเองซึ่งฉันได้รวมไว้ในโครงการ Delphi XE ผ่าน IDE และเปิดใช้งานจากเมนูบริบทของ Project Manager แม้ว่าไฟล์จะตรวจสอบความถูกต้องมันก็จะถูกปิดการใช้งานเสมอหลังจากที่ฉันบันทึกไฟล์โครงการอีกครั้ง Custom.targetsต่อไปนี้เป็นรุ่นที่เรียบง่ายของไฟล์เป้าหมายชื่อ <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="Hello"> <Message Text="Hello from custom target"/> </Target> </Project> ไฟล์แบบสแตนด์อโลนจะทำงานได้ตามที่คาดไว้: กำลังพิมพ์ ... MSBuild Custom.target /t:Hello ... ที่บรรทัดคำสั่งให้ข้อความที่คาดหวัง การเพิ่มCustom.targetsโครงการ Delphi ผ่าน IDE จะแสดงไฟล์ในตัวจัดการโครงการตามที่คาดไว้และ.dprojตอนนี้ไฟล์มีบรรทัด ... <TargetsFile Include="Custom.targets"/> ผมคลิกขวาแฟ้มในผู้จัดการโครงการ IDE Enableและเลือก แต่เมื่อโครงการสร้างขึ้นBuildหน้าต่างข้อความจะปรากฏขึ้น: [คำเตือน MSBuild] Custom.targets (1): ละเว้นการนำเข้าที่ถูกปิดใช้งาน: PathToProjectSource\\Custom.targets คลิกขวาอีกครั้งในผู้จัดการโครงการยังคงแสดงให้เห็นถึงตัวเลือกแทนการที่คาดว่าจะEnableDisable ที่บรรทัดคำสั่งMSBuild …

8
ทางลัดเยื้องใน Visual Studio
ฉันยังใหม่กับ Visual Studio 2010 และ C # ฉันจะเยื้องข้อความที่เลือกเป็นซ้าย / ขวาโดยใช้ทางลัดได้อย่างไร ใน Delphi IDE ค่าเทียบเท่าคือCtrl+ Shift+ IและCtrl+ Shift+U

17
แอปพลิเคชันไม่สามารถเริ่มต้นอย่างถูกต้อง (0xc000007b)
ฉันมีแอพไคลเอนต์ / เซิร์ฟเวอร์ที่ฉันพัฒนาบนพีซีเครื่องเดียว ตอนนี้มันต้องการพอร์ตอนุกรมสองพอร์ตดังนั้นฉันจึงยืมพีซีจากเพื่อน เมื่อฉันสร้างแอพและลองเรียกใช้หรือแก้ไขข้อบกพร่อง (ไม่ว่าจะเป็นใน Delphi IDE หรือจากตัวจัดการไฟล์ของ Windows) มันเกิดข้อผิดพลาด "แอปพลิเคชันไม่สามารถเริ่มต้นอย่างถูกต้อง (0xc000007b)" Googling ไม่ได้นำเสนออะไรมาก แต่ดูเหมือนจะบ่งบอกว่านี่ไม่ใช่สิ่งที่ Delphi เจาะจงและเกิดขึ้นกับแอพอื่น ๆ ดูเหมือนว่าจะเกิดจากการเรียกใช้ DLL 32 บิตจากแอป 64 บิตหรือในทางกลับกัน พีซีทั้งสองเครื่องเป็น Windows 7, 64 บิต ทั้งสองมีรุ่นเริ่มต้น Delphi Xe2 ซึ่งสามารถจัดการได้ 32 บิตเท่านั้น แอพทำงานได้ดีบนพีซีของฉัน แต่ไม่ใช่ในเพื่อนของฉัน แอป Delphi อื่น ๆ ทำงานได้ดีบนพีซีทั้งสองเครื่อง ทุกคนสามารถให้คำแนะนำฉันเกี่ยวกับวิธีติดตามสิ่งนี้ได้หรือไม่
159 windows  delphi  64-bit 

1
เซิร์ฟเวอร์ SOAP และแอปพลิเคชันไคลเอนต์ VCL + indy สาธิตสำหรับ Delphi XE?
Delphi เคยรวมโฟลเดอร์สาธิตสำหรับบริการบนเว็บ แต่ดูเหมือนจะไม่รวมสิ่งนี้อีกต่อไป ฉันเพิ่งลองโครงการตัวอย่าง Delphi 7 ( SOAPDMServerWADเซิร์ฟเวอร์ที่ไม่มี UI เกือบทั้งหมดและSOAPDMClient) และไม่สามารถทำให้มันทำงานได้แม้ใน Delphi 7 หากใครเคยสาธิตการทำงานที่คล้ายกันใน Delphi XE หรือ Delphi 2010 เหมือนกับการSOAPDMServerWAD+SoapDMClientสาธิตเก่าทำงานใน Delphi XE และอย่างน้อย UI ขั้นต่ำที่มาจากตัวช่วยสร้างแอปพลิเคชันเซิร์ฟเวอร์ Delphi SOAP นั้นจะสมบูรณ์แบบ อัปเดต:การสาธิตจะปรากฏขึ้นจนถึง Delphi 2010 แต่ใช้ WAD ที่ล้าสมัยแล้วในตอนนี้ (web-app-debugger) ฉันพยายามที่จะย้ายพอร์ตไปยัง Indy ใหม่runtime/web-app-development-harnessing-codeแต่ฉันดูเหมือนจะใช้งานไม่ได้ การสาธิตทำงาน แต่เซิร์ฟเวอร์ไม่มีส่วนต่อประสานกับผู้ใช้และดูเหมือนจะไม่เรียกใช้เซิร์ฟเวอร์ HTTP ใด ๆ (ทดสอบโดยใช้เว็บเบราว์เซอร์ทั่วไปผ่านhttp://localhost:port/URL โดยวิธีลอง googling สำหรับการสาธิตและ URL นี้จะปรากฏขึ้นและ ฉันถามน้อยกว่าหนึ่งชั่วโมงที่ผ่านมาน่ากลัว …

2
วิธีสร้างฟอร์ม“ ไม่เปิดใช้งาน” ใน Firemonkey
ใน XCode โดยการเพิ่มวิธีการเหล่านี้ในคลาสย่อย NSView ของคุณสามารถป้องกันไม่ให้หน้าต่างทำงานเมื่อคลิกที่: - (BOOL)shouldDelayWindowOrderingForEvent:(NSEvent )theEvent { return YES; } - (BOOL)acceptsFirstMouse:(NSEvent )theEvent { return YES; } - (void)mouseDown:(NSEvent )theEvent { [[[NSApp]] preventWindowOrdering]; } ในแพลตฟอร์ม Windows มันทำโดยรหัสง่ายๆนี้: HWND hWnd = FindWindowW((String("FM") + fmxForm->ClassName()).c_str(), fmxForm->Caption.c_str()); SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_NOACTIVATE); ฉันจะ subclass NSView เพื่อป้องกันไม่ให้ FMX TForm ของฉันทำงานเมื่อคลิกที่มันได้อย่างไร? ฉันจะสร้างฟอร์ม" …

8
EProgrammerNotFound ข้อยกเว้นใน Delphi?
ใน Delphi 2009 SysUtils.pas มีสิ่งนี้ในบรรทัดที่ 425: EProgrammerNotFound = class(Exception); นี่เป็นแค่ไข่อีสเตอร์หรืออะไรที่ร้ายแรง? ข้อยกเว้นนี้ควรจะเพิ่มขึ้นเมื่อใด มันมีอยู่ใน Delphi Prism และ / หรือ Free Pascal ด้วยหรือไม่? ถาม: คลาสข้อยกเว้นนี้ยังคงประกาศอยู่ใน Delphi (ปัจจุบันคือ XE7) หรือไม่ ตอบ: ใช่และเป็นเอกสารด้วยซ้ำ! วิธีที่ไม่เป็นมาตรฐานในการระบุข้อบกพร่องของซอฟต์แวร์ คุณสามารถใช้ EProgrammerNotFound เป็นทางเลือกในการระบุข้อบกพร่องของซอฟต์แวร์ที่ตรวจพบในขณะทำงาน

3
รายการคุณลักษณะภาษาเดลฟีและเวอร์ชันที่ใช้งาน / เลิกใช้งาน
ก่อนที่ฉันจะเริ่มฉันอยากจะชี้ให้เห็นว่าฉันได้ค้นหาสิ่งเหล่านี้ซ้ำแล้วซ้ำเล่าอย่างละเอียดถี่ถ้วนและละเอียดถี่ถ้วนผ่านทาง Google และไม่พบ ฉันต้องการ (สำหรับโปรเจ็กต์ที่ฉันกำลังพัฒนา) รายการของเดลฟีทั้งหมด (2007 ถึงเวอร์ชันล่าสุดที่เปิดตัวฉันไม่รองรับเวอร์ชันที่เก่ากว่าปี 2007 อีกต่อไป) "คุณลักษณะทางภาษา" และเวอร์ชันที่มีการเปิดตัวและ ( ถ้ามี) เลิกใช้ปรับปรุงหรือลบออก ฉันเคยสังเกตคำถามที่คล้ายกันนี้ใน Stack Overflow ก่อนหน้านี้แม้ว่าคำถามส่วนใหญ่จะใช้วลีในรูปแบบ "คุณลักษณะใดที่ดีที่สุด" และปิดเนื่องจากถือว่าไม่เหมาะสม หากใครทราบรายชื่อดังกล่าว (หรือมีเวลาว่างพอที่จะรวบรวมได้) ฉันจะขอบคุณมาก คำตอบที่ยอมรับจะมีลิงก์ไปยังรายการดังกล่าวหรือรายการนั้นเอง

8
ค้นหาว่ากระบวนการใดที่ลงทะเบียนฮอตคีย์ทั่วโลก? (Windows API)
เท่าที่ฉันสามารถหาได้ Windows ไม่มีฟังก์ชั่น API เพื่อบอกว่าแอปพลิเคชันใดที่ลงทะเบียนฮอตคีย์ทั่วโลก (ผ่าน RegisterHotkey) ฉันพบได้เฉพาะว่ามีการลงทะเบียนฮอตคีย์หาก RegisterHotkey ส่งคืนเท็จ แต่ไม่ใช่ใคร "เป็นเจ้าของ" ฮอตคีย์ ในกรณีที่ไม่มี API โดยตรงมีทางอ้อมได้ไหม Windows ดูแลจัดการที่เกี่ยวข้องกับคีย์ลัดที่ลงทะเบียนแต่ละอัน - เป็นเรื่องที่น่าขันเล็กน้อยที่ไม่มีทางรับข้อมูลนี้ได้ ตัวอย่างของสิ่งที่ไม่น่าจะใช้งานได้: ส่ง (จำลอง) ฮ็อตคีย์ที่ลงทะเบียนจากนั้นดักจับข้อความฮอตที่ Windows จะส่งไปยังกระบวนการที่ลงทะเบียน อันดับแรกฉันไม่คิดว่าการดักฟังข้อความจะเปิดเผยที่จับหน้าต่างปลายทาง ประการที่สองแม้ว่าจะเป็นไปได้ แต่ก็เป็นเรื่องที่ไม่ดีที่จะทำเนื่องจากการส่งคีย์ลัดจะทำให้เกิดกิจกรรมที่ไม่พึงประสงค์ทุกประเภทจากโปรแกรมต่างๆ ไม่มีอะไรสำคัญ แต่ฉันเคยเห็นการร้องขอฟังก์ชันดังกล่าวบ่อยครั้งและฉันเองก็ตกเป็นเหยื่อของแอปพลิเคชันที่ลงทะเบียนคีย์ลัดโดยไม่เปิดเผยที่ใดก็ได้ใน UI หรือเอกสาร (ทำงานในเดลฟีและไม่มากไปกว่าเด็กฝึกงานที่ WinAPI โปรดเมตตา)

4
ฉันจะทำให้ GUI ทำงานได้ดีได้อย่างไรเมื่อการปรับขนาดแบบอักษรของ Windows มากกว่า 100%
เมื่อเลือกขนาดตัวอักษรขนาดใหญ่ในแผงควบคุมของ Windows (เช่น 125% หรือ 150%) จะมีปัญหาในแอปพลิเคชัน VCL ทุกครั้งที่มีการตั้งค่าแบบพิกเซล ใช้TStatusBar.Panel. ฉันตั้งค่าความกว้างเพื่อให้มีป้ายกำกับเดียวตอนนี้มีแบบอักษรขนาดใหญ่ป้ายกำกับ "ล้น" ปัญหาเดียวกันกับส่วนประกอบอื่น ๆ แล็ปท็อปใหม่บางรุ่นจาก Dell จัดส่งไปแล้ว 125% เป็นค่าเริ่มต้นดังนั้นในอดีตปัญหานี้ค่อนข้างหายากตอนนี้มันสำคัญมาก จะทำอะไรได้บ้างเพื่อเอาชนะปัญหานี้?

2
คุณจะดึงข้อมูลตัวแปรโลคัล (ที่อยู่และประเภท) จากโปรแกรม Delphi หรือข้อมูลดีบักที่สร้างโดยคอมไพเลอร์ได้อย่างไร
เป้าหมายของฉันคือ: ให้เธรดที่ถูกระงับในโปรแกรม Windows 32 หรือ 64 บิตที่คอมไพล์เดลฟีเพื่อเดินสแต็ก (doable) กำหนดรายการสแต็กเพื่อแจกแจงตัวแปรโลคัลในแต่ละวิธีและค่าของตัวแปร นั่นคืออย่างน้อยที่สุดให้ค้นหาที่อยู่และประเภทของพวกเขา (จำนวนเต็ม 32/64 / ลงนาม / ไม่ได้ลงนาม, สตริง, ลอย, บันทึก, คลาส ... ) ชุดค่าผสมที่สามารถใช้เพื่อค้นหาค่าได้ ข้อแรกใช้ได้ดีและเป็นคำถามที่สองเกี่ยวกับคำถามนี้ ในระดับสูงคุณจะแจกแจงตัวแปรโลคัลจากรายการสแต็กใน Delphi ได้อย่างไร ในระดับต่ำนี่คือสิ่งที่ฉันกำลังตรวจสอบ: RTTI:ไม่แสดงรายการข้อมูลประเภทนี้เกี่ยวกับวิธีการ นี่ไม่ใช่สิ่งที่ฉันเคยคิดว่าเป็นตัวเลือกที่สมจริง แต่มีรายชื่ออยู่ที่นี่ ข้อมูลการดีบัก:กำลังโหลดข้อมูลการดีบักที่สร้างขึ้นสำหรับรุ่นดีบัก ไฟล์แผนที่: แม้แต่ไฟล์แผนที่โดยละเอียด (ไฟล์รูปแบบข้อความ! เปิดไฟล์หนึ่งแล้วดู) ไม่มีข้อมูลตัวแปรในเครื่อง โดยทั่วไปจะเป็นรายการที่อยู่และหมายเลขบรรทัดไฟล์ต้นฉบับ เหมาะสำหรับการระบุแอดเดรสกับไฟล์และความสัมพันธ์ของเส้นเช่นจุดสีน้ำเงินในรางน้ำ ไม่ดีสำหรับข้อมูลรายละเอียดเพิ่มเติม ข้อมูลการดีบักระยะไกล (ไฟล์ RSM) - ไม่มีข้อมูลที่ทราบเกี่ยวกับเนื้อหาหรือรูปแบบ ไฟล์ TD32 / TDS:สายงานวิจัยปัจจุบันของฉัน มีสัญลักษณ์ทั่วโลกและในท้องถิ่นท่ามกลางข้อมูลอื่น …

10
ตัวแปรเดลฟายเริ่มต้นด้วยค่าตามค่าเริ่มต้นหรือไม่
ฉันเพิ่งเริ่มใช้ Delphi และฉันได้ทำการทดสอบเพื่อดูว่าตัวแปรออบเจ็กต์และตัวแปรสแต็กใดบ้างที่เริ่มต้นโดยค่าเริ่มต้น: TInstanceVariables = class fBoolean: boolean; // always starts off as false fInteger: integer; // always starts off as zero fObject: TObject; // always starts off as nil end; นี่เป็นพฤติกรรมที่ฉันคุ้นเคยกับภาษาอื่น แต่ฉันสงสัยว่าจะปลอดภัยหรือไม่ที่จะพึ่งพาภาษาเดลฟี? ตัวอย่างเช่นฉันสงสัยว่าอาจขึ้นอยู่กับการตั้งค่าคอมไพเลอร์หรืออาจทำงานแตกต่างกันไปในเครื่องอื่น เป็นเรื่องปกติหรือไม่ที่จะใช้ค่าเริ่มต้นที่เป็นค่าเริ่มต้นสำหรับอ็อบเจ็กต์หรือคุณตั้งค่าตัวแปรอินสแตนซ์ทั้งหมดในคอนสตรัคเตอร์อย่างชัดเจน สำหรับตัวแปรสแต็ก (ระดับขั้นตอน) การทดสอบของฉันแสดงให้เห็นว่าบูลีนที่มีการแปลงหน่วยเป็นจริงจำนวนเต็มหน่วยคือ 2129993264 และวัตถุที่ไม่ได้กำหนดค่าเริ่มต้นเป็นเพียงตัวชี้ที่ไม่ถูกต้อง (เช่นไม่ใช่ศูนย์) ฉันเดาว่าบรรทัดฐานคือต้องตั้งค่าตัวแปรระดับขั้นตอนก่อนเข้าถึงเสมอหรือไม่?

1
มีวิธีที่จะบอกได้โดยทางโปรแกรมหรือไม่ว่า FastMM บล็อกหน่วยความจำบางส่วนไม่ได้เป็นอิสระหรือไม่?
ฉันกำลังพยายามตรวจสอบว่าบล็อกหน่วยความจำไม่ได้รับการปลดปล่อยหรือไม่ แน่นอนผู้จัดการบอกฉันโดยใช้กล่องโต้ตอบหรือไฟล์บันทึก แต่ถ้าฉันต้องการเก็บผลลัพธ์ในฐานข้อมูลล่ะ? ตัวอย่างเช่นฉันต้องการมีชื่อของรูทีนในตารางฐานข้อมูลที่จัดสรรบล็อกที่กำหนดไว้ในตารางฐานข้อมูล หลังจากอ่านเอกสารของ FastMM ฉันรู้ว่าตั้งแต่เวอร์ชัน 4.98 เรามีความเป็นไปได้ที่จะได้รับแจ้งจากผู้จัดการเกี่ยวกับการจัดสรรหน่วยความจำอิสระและการจัดสรรใหม่เมื่อเกิดขึ้น ตัวอย่างเช่นOnDebugFreeMemFinishเหตุการณ์ที่ส่งถึงเราPFullDebugBlockHeaderซึ่งมีข้อมูลที่เป็นประโยชน์ มีสิ่งหนึ่งที่PFullDebugBlockHeaderขาดหายไป - ข้อมูลหากแอปพลิเคชันเป็นอิสระจากบล็อกที่ระบุ เว้นแต่OnDebugFreeMemFinishจะถูกเรียกเฉพาะสำหรับบล็อกที่ไม่เป็นอิสระ? นี่คือสิ่งที่ฉันไม่ทราบและต้องการค้นหา ปัญหาคือแม้แต่การเชื่อมต่อในOnDebugFreeMemFinishกรณีที่ฉันไม่สามารถค้นหาได้ว่าบล็อกนั้นเป็นอิสระหรือไม่ นี่คือตัวอย่าง: program MemLeakTest; {$APPTYPE CONSOLE} uses FastMM4, ExceptionLog, SysUtils; procedure MemFreeEvent(APHeaderFreedBlock: PFullDebugBlockHeader; AResult: Integer); begin //This is executed at the end, but how should I know that this block should be freed //by application? …

1
ไม่มีแท็กที่จำเป็นเมื่อใช้ Delphi XML Data Binding Wizard
ฉันใช้XML Data Binding WizardในDelphi XE2. สคีมาต้องใช้แท็กประเภทนี้: <xs:element name="MyReport" type="MyReportType" /> <xs:complexType name="MyReportType"> <xs:all> <xs:element name="Header" type="HeaderType" /> <xs:element name="Values" type="ValuesType" /> <xs:element name="Events" type="EventsType" /> </xs:all> </xs:complexType> ปัญหาคือถ้าฉันไม่เพิ่มองค์ประกอบใด ๆ ในเช่นValues-group จะไม่มี<Values>-tag และไฟล์ XML จะล้มเหลวในการตรวจสอบกับไฟล์XSD. นี่อาจจะไม่เป็นปัญหาหากอินเทอร์เฟซมีวิธีการ "เพิ่ม" Values-tag มีวิธีการมาตรฐานในการจัดการสิ่งนี้หรือฉันใช้รหัสที่สร้างขึ้นอย่างถูกต้อง? ใส่เพียงจะมีใด ๆวิธีการทำงานรอบหรือมิฉะนั้นใช้รหัสจากที่Data Binding Wizardในการผลิตต่อไปนี้XML(ซึ่งเป็นสิ่งที่จำเป็นในการตรวจสอบโดยใช้สคีมาข้างต้นเมื่อไม่มีโหนดลูก) ให้HeaderType, ValuesTypeและEventsTypeมี complexType : <MyReport> <Header /> <Values …
99 xml  delphi  xsd  delphi-xe2 


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.