Gå til innhold

Borland C++ Builder 5: "idiot" spørsmål


Anbefalte innlegg

Heisan!

 

Jeg er en av de som andre mener har for mye penger, jeg kjøpte Borland C++ Builder 5 Professional (som student lisens) for flere år siden og har hatt en del morro med programmet. Mine støtrste problem har vel alltid vært hoppet fra å programmere C eller C++ i et DOS miljø, og jeg har alldrig klart å kjenne meg helt hjemme i Builder. Lese inn fra edit boxer, skrive ut text til edit boxer, små-ting som det tok dager med svette for å lære seg selv. Nå går det -LITT- bedre, men jeg har noen "N00B" spørsmål som jeg vil ha svar på så mange som mulig av:

 

- Hvordan skriver jeg ut tekst til en "Label" under runtime? Jeg har ikke fått det til med metoden som jeg anvender for "Edit"'s.

 

- Hvordan skal jeg definere en funksjon og kalle på en funksjon når man må bruke "void __fastcall"? Jeg vil kjøre noen tester f.eks. når man trykker på en button (fastcall funksjon som autogenereres) og avhengig av disse testene skal en funksjon som jeg lager selv kjøres. Har prøvd å "ape" etter den autogenererte koden, men får feil når jeg forsøker å definere en slik funksjon i header-filen og får feil når jeg forsøker å kalle på den.

 

- Når jeg har en Edit box som jeg vil lese inn som et tall, så kjører jeg StrToFloat (f.eks). Deretter gjør jeg litt matte på noen variabler og vil skrive ut en float til en annen edit box. Lett, man kjører FloatToStr... jojo... men hvordan skal jeg formatere floaten slik at jeg ikke får mer enn x desimaler?? Dette var grise-lett i DOS men har ennå ikke fattet hvordan man gjør dette i Borland Builder?

 

- Finns det en visual component (som jeg kan laste ner eller som er innebygd) som lar meg sette opp seriell komunikasjon med serie-porten av typen "9600baud, no parity"? Dette var også lett i DOS, da man kunne operere direkte med BIOS og slikt, men Win2k og WinXP har satt den endelige stoppen for slikt, etter det jeg har forstått. Nå må man visst bruke VXD drivere eller noe for å få tilgang til serieporten... Dette ligger SÅ mye over mitt nivå at det føles håpløst, men jeg trenger å kunne kommunisere med serieporten!! HJELP!! Jeg har lest litt på "TPowersock" og det kan jo kanskje være denne, men i så fall har jeg ingen aning om hvordan jeg skal sette den opp eller bruke den!

 

 

Takk til alle som har lest så langt som dette, håper på hjelp og ikke flaming. Jeg kan ikke mye C eller C++, men jeg kan nokk til raskt å strukturert lage "små-programmer" i DOS.. problemet er at de fleste teknikkene som man er vandt med fra DOS ikke kan brukes (direkte) i windows..

 

 

Hjelp Hjelp Hjelp!! :)

[edit: la til TPowersock referens i mitt siste spørsmål. endret emne beskrivelse]

Endret av Dargar
Lenke til kommentar
Videoannonse
Annonse
Heisan!

 

Jeg er en av de som andre mener har for mye penger, jeg kjøpte Borland C++ Builder 5 Professional (som student lisens) for flere år siden og har hatt en del morro med programmet. Mine støtrste problem har vel alltid vært hoppet fra å programmere C eller C++ i et DOS miljø, og jeg har alldrig klart å kjenne meg helt hjemme i Builder. Lese inn fra edit boxer, skrive ut text til edit boxer, små-ting som det tok dager med svette for å lære seg selv. Nå går det -LITT- bedre, men jeg har noen "N00B" spørsmål som jeg vil ha svar på så mange som mulig av:

 

GUI programmering er og blir et "herk".

Jeg må si at jeg desverre ikke har så mye erfaring med det (heldigvis? :) ), og Borland sitt API har jeg 0 erfaring med; så jeg er i grunn n00b selv. :)

 

 

- Hvordan skriver jeg ut tekst til en "Label" under runtime? Jeg har ikke fått det til med metoden som jeg anvender for "Edit"'s.

 

Jeg er ikke 100% sikker, men jeg tror ikke det går å endre en Label under runtime. Du kan i stedet bruke en Edit og "låse" den slik at brukeren ikke kan redigere den.

 

 

--klippe vekk ting jeg ikke kan svare på--

 

- Når jeg har en Edit box som jeg vil lese inn som et tall, så kjører jeg StrToFloat (f.eks). Deretter gjør jeg litt matte på noen variabler og vil skrive ut en float til en annen edit box. Lett, man kjører FloatToStr... jojo... men hvordan skal jeg formatere floaten slik at jeg ikke får mer enn x desimaler?? Dette var grise-lett i DOS men har ennå ikke fattet hvordan man gjør dette i Borland Builder?

 

Du kan altids forsøke å bruke C++'s standard stream-funksjoner for dette:

#include <iostream> 
#include <iomanip>
#include <sstream>
#include <math.h>

using namespace std;

int main()
{
stringstream temp;
double tall1, tall2;

// tallet hentet fra editboks1 og lagret i en vanlig C++ string
string stringTall = "3.1415";

temp << stringTall << endl;

// konvertere fra string (editboks1) til double
temp >> tall1; 

// gjøre litt matte:
tall2 = sqrt(tall1) + 0.003;
cout << tall2 << endl;

// konvertere tilbake fra double til string; for bruk i (editboks2)
temp.str(""); // fjern det som allerede ligger i temp
temp << fixed << setprecision(2) << tall2; // fixed format med 2 siffer bak komma

// konvertere til det formatet Borland-API'et trenger i editboks2
cout << temp.str() << endl; // C++ string
cout << temp.str().c_str() << endl; // C string (const char*)
cout << const_cast<char*>(temp.str().c_str()) << endl; // C string (char*)

return(0);
}

 

..legg merke til de tre siste "setningene"; som tar for seg de formatene som (jeg tror) måtte trenges for å lagre en string i en eventuell Borland-spesifikk string-type eller for å "gi" den til en Borland-spesifikk funksjon.

(Jeg har desverre ikke Borland eller Windows.)

 

under kjøring:

 

1.77543

1.78

1.78

1.78

 

 

-- klippe resten, som jeg heller ikke har noen mulighet til å svare på :grine: --

Endret av daysleper
Lenke til kommentar

Som et alternativ til GUI-delen av spørsmålet ditt:

 

Det du kunne ha vurdert var å bruke et "fritt tilgjengelig" / Open Source -API i stedet for Borland sitt.

 

FLTK for eksempel: http://www.fltk.org/

 

Det er mye lettere for folk (meg i hvertfall) å hjelpe til med et slikt;

- For det første er det fritt tilgjengelig.

- For det andre er det tilgjengelig på flere platformer enn Windows.

 

Ser du har postet på tilbakemeldinger ang. sourcecode.no om guider og slikt.

Hvis noen vil skrive en guide om Borland er det ikke noe i veien for det, men det innebærer at de som leser (og den som skal skrive) også må "ha for mye penger" som du sier. Det blir med andre ord ikke like mange som får glede av den.

 

Hvis du (eller andre) er intressert; kan jeg skrive en liten guide om hvordan man bruker FLTK i stedet.

 

Jeg kommer i så fall til å bruke en fritt tilgjengelig compiler (kallt MinGW) fremfor Borland sin; den samme som beskrevet i spørsmålet "Hvordan komme i gang med C/C++ under Windows" i FAQ'en.

 

Men det er sikkert ingen ting i veien for at du kan bruke enten:

- Borland som en helhet for å compilere/linke mot FLTK (dette må noen andre forklare, hvis du ikke vet hvordan man setter link/compile-options i Borland).

- Borland sitt IDE men med MinGW compileren som "back end" (hvis dette er mulig?).

 

..hvis du absolutt -må- bruke Borland IDE'et altså, men i første omgang kommer jeg til å ta for meg MinGW og en simpel teksteditor.

 

EDIT: Når jeg ser etter, så ser det ut som om FLTK har "direkte" støtte for Borland C++ Builder 5. :)

 

Kunne dette vært interessant? :)

Endret av daysleper
Lenke til kommentar

Jo, det kunne vel være interesant, men (blush) hvordan får jeg compila FLTK på min maskin?

 

Ellers er jeg fortsatt interesert i noen som kan hjelpe meg (i FLTK eller Borland) å få tilgang til serieporten slik at jeg kan skrive og lese fra den. (9600 baud, 1 stop bit, no parity etc.)

 

Takker for tilbakemeldinger så langt, skal teste setprecision og sånt så snart jeg får tid. Er ganske hektisk på skolen for tiden. (Der hadde det også hjelpt om jeg fikk tilgang til serie-porten fra windows program... )

Lenke til kommentar

Mener det skal følge med en prosjekt-fil du kan bruke for å kompilere FLTK under Borland.

 

Jeg tenkte at guiden skulle ta for seg dette med kompilering, installering og noen enkle eksempler i MinGW i første omgang. Så kan vi utvide etterhvert. :)

 

FLTK er kun et bibliotek for GUI-programmering så du finner nok desverre ingen klasser kommunikasjon mot serie-porten der.

 

Hvis du ikke får hjelp her med programmering av seriell-porten kan du kanskje få noe greie ut av dette: http://www.google.com/search?q=programming...al+port+windows

Endret av daysleper
Lenke til kommentar

[edit 2: problemet løst, se posten under!]

 

 

[edit: jeg har registrert meg på sourceforge sitt forum og forsøker å få hjelp derfra også. Dersom jeg finner løsningen før noen andre svarer, så oppdaterer jeg denne posten med løsningen.]

 

 

 

Heisann!

Om jeg skal gå etter brukermanualen (på 268 sider) så er "APRO" exakt det jeg trenger! Har lest relativt mye i den allerede, og den virker å ha alt jeg vil ha innpakket i et fint brukervennlig visuelt skal. :)

 

Men... (det finns alltid et men ikke sant?)

 

I readme som følger med fra sourceforge står det litt om hvordan man skal instalere dette. Desverre så går det ikke når jeg forsøker å følge anvisningene.

 

Først klipp fra readme:

 

To install TurboPower APRO into your IDE, take the following steps:

 

1. Unzip the release files into a directory (e.g., d:\apro).

 

2. Start Delphi or C++Builder.

 

3. Add the source subdirectory (e.g., d:\apro\source) to the IDE's

library path.

 

4. Open & compile the runtime package specific to the IDE being

used.

 

5. Open & install the designtime package specific to the IDE being

used. The IDE should notify you the components have been

installed.

 

 

Hva jeg gjør:

legger til pathen til "source" i IDE library path.

Velger "open" og velger filen "A406_R51.bpk", får opp en liten dialog i IDE. (Compile, Add, Remove, Install, Options) Velger Compile. får error.

Error: " [Linker Fatal Error] Fatal: Unable to open file 'VCLMID50.LIB' "

 

Siden jeg har Borland C++5 så antar jeg at det er "R51" og "D51" filene jeg skal bruke, men hva er denne VCLMID50.lib som den ikke finner?

 

Hadde vært supert om du kunne holde meg i handen en liten stund til og hjelpe meg å få instalert denne VCL komponenten. Jeg har alldrig gjort det før, men det virket jo så lett helt til den begynner å prate of filer jeg ikke har.

 

Dersom jeg tar "install" så får jeg opp en "finner ikke filen" A406_R51.bpi, men jeg antar at bpi filen skal bli skapt når jeg kjører compile, og at det er derfor jeg ikke har den.

Endret av Dargar
Lenke til kommentar

JIPPI!!

 

Jeg fikk svar på sourceforge (etter bare en time!)

 

Problemet viste seg å være.. bah, jeg siterer:

Read and respond to this message at:

https://sourceforge.net/forum/message.php?msg_id=2289219

By: derbas

 

 

In a text editor (anything BUT Builder), edit the project file to remove the

"VCLMID50.LIB".

 

 

This is an unfortunate error caused by the projects being built for release

using the Enterprise version, rather than Professional, and in their (understandable)

haste to get them released for opensource, the TP guys forgot to edit out some

of the 'extra' stuff.

 

så nå fungerer det! (Vert å merke seg at det er "A406_R51.bpr" som man skal gå inn (med notepad) å endre, også vert å merke seg at man compiler "A406_R51.bpr" og deretter åpner "A406_D51.bpr" og installerer denne! :)

 

Skal bare se klart Beck nå, så skal jeg begynne å experimentere med den! Og dokumentasjonen er jo helt fantastisk! (Enn så lenge! :)

 

Hurra!

 

Takk for all tid og hjelp daysleeper! Jeg hadde nokk alldrig funnet denne VCL komponenten uten deg!! Tusen tusen takk!

Lenke til kommentar

Bare en liten opplysning.

 

C++ BuilderX er gratis i personal utgave. Den finnes også både til Windows og Linux. Bare å registrere seg hos http://www.borland.com, og laste ned. Registrerings fil kommer på mail.

Har brukt den litt i både Linux og Windows, til relativt enkle programmer foreløpig. Fungerer fint.

Ellers så har du http://forum.devshed.com hvis det er lite svar å få her.

Endret av Orjanp
Lenke til kommentar
  • 5 uker senere...
  • 4 uker senere...

Disclaimer: jeg kan Delphi, ikke C++ Builder.

Likevel, VCL er skrevet i Delphi, så jeg tror jeg kan hjelpe litt.

 

- Hvordan skriver jeg ut tekst til en "Label" under runtime? Jeg har ikke fått det til med metoden som jeg anvender for "Edit"'s.

Skal vel være noe som ligner på Label1->Caption='MyText'

 

Jeg vil kjøre noen tester f.eks. når man trykker på en button (fastcall funksjon som autogenereres) og avhengig av disse testene skal en funksjon som jeg lager selv kjøres

Hvorfor skal du lage en funksjon som defineres på samme måte som de autogenererte? Du trenger bare en lokal funksjon som du kaller på samme måte som du vanligvis gjør. Jeg vet ikke om du i det hele tatt trenger å definere disse i header. Button o.l. er helt vanlige objekter, hvis du ønsker å sende dem til funksjon.

hvordan skal jeg formatere floaten slik at jeg ikke får mer enn x desimaler?

Jeg bruker følgende i Delphi: FormatFloat('#,##0.00',MyFloatValue). Da blir 1000,334 til 1 000,33. Sjekk i hjelpefilen om FormatFloat funksjon.

Finns det en visual component (som jeg kan laste ner eller som er innebygd) som lar meg sette opp seriell komunikasjon med serie-porten av typen "9600baud, no parity"?

Sjekk her: http://www.torry.net/modems.htm

Der ligger det en del komponenter, noen av dem freeware med kildekoden. Skal gå an å installere i Builder, selv om de er laget i Delphi. Skal du virkelig ha en visuell komponent? Disse er som regel ikke-visuelle (dvs., de blir ikke en del av GUI, de bare ligger der som tilgjengelige objekter.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...