Gå till innehåll
Just nu i M3-nätverket

"Hur ska jag göra"...i realbasic?


JvA

Rekommendera Poster

Nu när jag äntligen är ledig tänkte jag ta tag i programmerandet igen. Ideer har jag många, men kunnandet är det värre med...

 

Problem 1: Jag har en excelfil med en massa siffror i som jag vill använda mig av i mitt program. Hur gör man det på bästa sätt? Jag skulle väl förstås kunna fixa en textfil som jag sedan läser in i programmet, men då får jag en fil som ligger och dräller och som folk kan ändra i. Det vill jag helst komma ifrån. Kan man typ...:ermm:... göra på nåt annat sätt utan att hålla på och läsa från filer?

 

Problem 2: Vad ska jag använda om jag vill hämta data från internet? Antag t ex att jag vill komma åt dollarkursen på svtttext (sid 230), hur gör jag då? (om det nu går!)

 

Oftast brukar problemen kunna lösas genom att kolla exempel, men nu jag hittar inga bra!? Kanske är det någon som kan ge en liten hint om var jag ska börja leta? :)

Länk till kommentar
Dela på andra webbplatser

REALbasic har jag aldrig använt. Vad är det för fel på Xcode? Men rent allmänt så är det väl bara att lägga in data i en vektor, en lista eller vilken datatyp du vill använda men gör det dynamiskt så att du kan uppdatera ditt program utan att behöva gör ändringar på mer än ett ställe (dvs i princip en fil som innehåller dina data men det behöver ju inte vara en en för all tillgänglig och editerbar text fil).

 

 

Om att hämta data ur html kod från en websida så är väl principen i stort den samma med lite olika variationer beroende på hur sidan ser ut. I terminalen kan man t.ex. skriva

curl -s http://www.svt.se/texttv/230.html | sed 's/<[^>]*>//g' | grep US-dollar

Dvs

 

1) Läs in sidan som html kod (curl delen i kommandot)

2) Plocka fram textinnehållet genom att rensa bort html taggarna (sed delen i kommandot)

3) Plocka fram den rad som innehåller efterfrågad information (grep delen i kommandot)

 

Men att plocka data från en html sida som kan ha bytt struktur nästa gång man skall använda programmet är väl allmänt en rätt dålig idé. Dessutom i detta fallet lägg märke till "Copyright SVT Text" kan ju vara ett krav från Ecovision som står som källa.

Länk till kommentar
Dela på andra webbplatser

REALbasic har jag aldrig använt. Vad är det för fel på Xcode?

149466[/snapback]

Nja, enda felet är väl att jag inte kan! :( Vi läste en en enkel visual basic-kurs i skolan och då skulle visst realbasic vara rätt likt det. Jag anar att ni riktiga programmerare fnyser åt basickod, men det är enkelt att förstå och det brukar gå ganska snabbt att fixa ihop småprogram.

 

Tack för dina tips, jag ska fundera lite till och se om jag kan komma på nån lösning som fungerar.

 

/JvA, som tycker det roligaste är att rita egna ikoner. :whistling:

Länk till kommentar
Dela på andra webbplatser

Dessutom i detta fallet lägg märke till "Copyright SVT Text" kan ju vara ett krav från Ecovision som står som källa.

149466[/snapback]

Copyright på dollarkursen!? :blink:

Nä man har faktiskt inte copyright på vad som helst bara för att det står ett litet c längst ner på sidan.

Länk till kommentar
Dela på andra webbplatser

Nä man har faktiskt inte copyright på vad som helst bara för att det står ett litet c längst ner på sidan.

### OT varning.

 

Läs om Upphovsrätt, copyright på SVTs sidor.

 

http://svt.se/svt/jsp/Crosslink.jsp?d=2286

 

Om du sitter på en källa där det finns fritt tillgänglig och uppdaterad ekonomisk information som man har rättigheter att utan ersättning sprida/sälja vidare till allmänheten så kan fler än jag föreslå dig många goda och hållbara affärsidéer. I informationssamhället, där information är en vara som köps och säljs, så finns såvitt jag vet inga sådana källor.

Länk till kommentar
Dela på andra webbplatser

Gäst iMatte
Nu när jag äntligen är ledig tänkte jag ta tag i programmerandet igen. Ideer har jag många, men kunnandet är det värre med...

 

Problem 1: Jag har en excelfil med en massa siffror i som jag vill använda mig av i mitt program. Hur gör man det på bästa sätt? Jag skulle väl förstås kunna fixa en textfil som jag sedan läser in i programmet, men då får jag en fil som ligger och dräller och som folk kan ändra i. Det vill jag helst komma ifrån. Kan man typ...:ermm:... göra på nåt annat sätt utan att hålla på och läsa från filer?

 

Problem 2: Vad ska jag använda om jag vill hämta data från internet? Antag t ex att jag vill komma åt dollarkursen på svtttext (sid 230), hur gör jag då? (om det nu går!)

 

Oftast brukar problemen kunna lösas genom att kolla exempel, men nu jag hittar inga bra!? Kanske är det någon som kan ge en liten hint om var jag ska börja leta? :)

149449[/snapback]

 

 

Problem 1:

 

Vad ska du lagra? Är det statiska uppgifter eller såna som ändras hela tiden? Om det är uppgifter som ändras eller ska kunna ändras finns ju inget riktigt alternativ till att lagra dem i en fil. Dock behöver det inte vara en textfil, utan du kan lagra dem som rådata i valfritt format eller "kryptera" via någon egen funktion. Om du inte vill att någon ska kunna pilla i filen kan du använda en variabel typ "checksum" någonstans i filen, som kollar om innehållet är det samma som skrevs av programmet och om det inte är det kan man uppmärksamma användaren på det eller radera filen. Andra sätt att hindra "amatörer" att pilla i filer är att lagra dem som osynliga filer med obskyra namn i prefmappen.

Att använda en befintlig exel-fil är väl möjligt, men inbjuder till onödigt trassel. Den enda fördelen är väl om den används samtidigt av andra användare som kör Exel.

 

 

Problem 2:

 

Inga problem (om man nu bortser från copyrighten och risken att länkar ändras)

att ansluta via en Socket Control i RealBasic och använda http-protokollet.

Dock måste länkarna vara av den typ så att du ser hela länken i adressfönstret, typ http://www.svt.se/valutakurser/dollar.php (motsvarande GET-metoden i php mfl språk). Beroende på hur den sida man vill hämta uppgifterna ifrån är upplagd kan det vara mer eller mindre enkelt att hämta uppgifterna. Ibland måste man läsa in hela sidan, spränga upp texten i en lång array och sedan söka efter det man vill ha via en loop som går igenom hela texten tecken för tecken.

Viktigt är att hantera ev fel (användaren är inte uppkopplad, servern svarar inte etc)

 

Nu har jag förvisso inte jobbat i RealBasic sedan version 3.5 eller 4.0, men mycket ser nog lika ut.

Om du specar lite mer exakt vad du vill göra kan jag kanske hjälpa dig vidare

Länk till kommentar
Dela på andra webbplatser

Det där med dollarkursen på svttext tog jag bara som ett enkelt exempel på vad jag ville göra. Jag kommer inte att använda det i mitt program.

 

Problem 1: Det är isf en fil som aldrig ska användas eller ändras utan som jag bara vill läsa in när programmet startar. Tanken var om det gick att "baka" in allt i programmet direkt utan att hålla på och trassla med extra filer som måste laddas ner och placeras i rätt mapp.

 

Problem 2: Jag tror att jag löste det i natt eller iaf kom jag en bit på vägen. Jag hittade nåt som heter "httpsocket" och då kunde man hämta hem hela innehållet på websidan. Problemet var att man, till skillnad från det man kunde skriva i terminalfönstret, fick med hela htmlkodningen också. Men jag gjorde lite egen "fulkod" som rensade bort allt onödigt och det verkar iaf fungera. Men det kanske finns smartare sätt att göra det på?

 

 

Tillägg:

Ibland måste man läsa in hela sidan, spränga upp texten i en lång array och sedan söka efter det man vill ha via en loop som går igenom hela texten tecken för tecken.

Missade den meningen förut, men det var typ så jag gjorde. Då var det hyfsat rätt iaf då...

Länk till kommentar
Dela på andra webbplatser

Gäst iMatte
Problem 1: Det är isf en fil som aldrig ska användas eller ändras utan som jag bara vill läsa in när programmet startar. Tanken var om det gick att "baka" in allt i programmet direkt utan att hålla på och trassla med extra filer som måste laddas ner och placeras i rätt mapp.

149638[/snapback]

 

Om det är statiska uppgifter är det inga problem att baka in det i programmet, tex som resurser. Beroende på hur de senare ska användas får man göra på olika sätt. Om de tex ska användas som globala konstanter är det bara att hämta från resursdelen och skapa konstanter när programmet startar eller bara när de behövs om man vill spara på minnesförbrukningen.

Att lagra saker externt i filer finns bara skäl att göra om uppgifterna ska ändras eller byggas på. Ett annat skäl jag kommer på är om man vill hålla storleken på programfilen nere, så att vissa delar ligger i externa filer, tex om man bygger ett spel och användaren kan välja att lägga till de banor eller skins han vill ha istället för att man bakar in 2000 stycken i programfilen.

Länk till kommentar
Dela på andra webbplatser

Gäst iMatte
Missade den meningen förut, men det var typ så jag gjorde. Då var det hyfsat rätt iaf då...

149638[/snapback]

 

Antingen det eller så är vi båda lika usla amatörer... :whistling:

Länk till kommentar
Dela på andra webbplatser

Nu så...

 

Problem 1: Så enkelt!! :blushing: Det gick ju att dra en textfil in i programmet och sen läsa från den där. Då behövs det ju inte några extra filer som ligger och dräller i diverse mappar. Varför har jag inte vetat det tidigare?? :pinch:

 

Problem 2: Känns dock fortfarande inte som en helt perfekt lösning, men så länge det fungerar får det väl vara bra. Fast det vore ändå smidigare med nåt "fil=fil.HtmlKod.tabort" eller liknande...:whistling:

 

Tack för all hjälp!! :)

Länk till kommentar
Dela på andra webbplatser

Nu så...

 

Problem 2: Känns dock fortfarande inte som en helt perfekt lösning, men så länge det fungerar får det väl vara bra. Fast det vore ändå smidigare med nåt "fil=fil.HtmlKod.tabort" eller liknande...:whistling:

 

Tack för all hjälp!! :)

149733[/snapback]

 

i2n2 skrev ett litet regexp i sin post. Det finns säkert något objekt för att använda sådana. Då får du ett ganska smidigt sätt att få bort "skräp". Sen finns det säkert något som de-htmlencode;ar texten om det behövs.

Länk till kommentar
Dela på andra webbplatser

### OT varning.

 

Läs om Upphovsrätt, copyright på SVTs sidor.

 

http://svt.se/svt/jsp/Crosslink.jsp?d=2286

 

Om du sitter på en källa där det finns fritt tillgänglig och uppdaterad ekonomisk information som man har rättigheter att utan ersättning sprida/sälja vidare till allmänheten så kan fler än jag föreslå dig många goda och hållbara affärsidéer. I informationssamhället, där information är en vara som köps och säljs, så finns såvitt jag vet inga sådana källor.

149563[/snapback]

Skulle ändå inte tro att dollarkursen uppnår verkshöjd.

Länk till kommentar
Dela på andra webbplatser

Antingen det eller så är vi båda lika usla amatörer...  :whistling:

149664[/snapback]

Råkade se denna tråd.

Är det kurser du vill ha, kolla in www.xmethods.net, där finns det en massa saker åtkomliga via SOAP. RB 5.5 har bra XML stöd och stöd för SOAP.

Tro t.o.m. att det finns exempel på att hämta just aktiekurs eller vautakurs från XMethods via SOAP.

Länk till kommentar
Dela på andra webbplatser

Råkade se denna tråd.

Är det kurser du vill ha, kolla in www.xmethods.net, där finns det en massa saker åtkomliga via SOAP. RB 5.5 har bra XML stöd och stöd för SOAP.

Tro t.o.m. att det finns exempel på att hämta just aktiekurs eller vautakurs från XMethods via SOAP.

149952[/snapback]

Hur bra är realbasic egentligen, sett ur en "riktig" programmerares synvinkel? Är det okej eller bara mesigt?

Länk till kommentar
Dela på andra webbplatser

Hur bra är realbasic egentligen, sett ur en "riktig" programmerares synvinkel? Är det okej eller bara mesigt?

150023[/snapback]

Ur en "riktig" programmerares synvinkel är oftast RealBasic lite lekskola. Men för att göra enkla små verktyg så fungerar det bra.

Länk till kommentar
Dela på andra webbplatser

  • 1 month later...
Hur bra är realbasic egentligen, sett ur en "riktig" programmerares synvinkel? Är det okej eller bara mesigt?

150023[/snapback]

Jag tycker inte man skall förskasta realBasic för snabbt. De flesta som förkastar RB, jämför med visualBasic eller gammal hederlig radorienterad Basic a la ABC80/ABC800.

 

Om realbasic skall jämföras med något språk så är det Java, eftersom tankegångarna med Garbage Collection, References, objectorientering med classes och interfaces finns.

 

Jag har skrivit en hel del saker i RB, både smått och stort, och visst, det går att göra saker snabbare i c++, men vi talar inte om faktor 10 snabbare, utan c++ kompilerat med XCode jämfört med RB är c.a 10% snabbare. Dock är trådhanteringen i RB inget vidare (bara coop trådar), men i och med att man i RB5.5 och nu 2005 kan skriva shelltools i RB, så kan man faktiskt starta subprocesser som man har i som App folder som utför saker och kommunicerar med huvudapplikationen via t.ex Apple Events eller om man vill vara lite tightare, med TCP/IP.

 

Det som RB har som varken XCode Carbon har är snabbheten i utvecklingen av GUi. Visst använder man Cocoa så är det snabbt, men jag har fortfarande efter ett antal år inte blivit helt lycklig över Cocoa. Jag är inte förtjust i avsaknaden av typning, som är det som leder till krasher (kola bara varför alla Cocoa applications crahar i krashloggen, 99% av fallen är det ObjMsgSend som på ett eller annat sätt krashar den man försöker prata med ett Object som antingen inte finns, eller inte vill svara eller svarar på rätt sätt på anropet.

Länk till kommentar
Dela på andra webbplatser

  • 2 years later...
Ur en "riktig" programmerares synvinkel är oftast RealBasic lite lekskola. Men för att göra enkla små verktyg så fungerar det bra.

Jag har sett riktiga kanonprogram gjorda i RB. Och ökenprogram i c+++++

 

När det gäller det specifika problemet, så är det nog bara att lägga in Excel som ett OLE-objekt och fortsätta därifrån. Jag reserverar mig dock för den här metoden, eftersom jag inte prövat den fullt ut. Egentligen har jag knappt kört 7:an (som har den här möjligheten), utan de enkla applikationer jag utvecklat bygger på RB 5.

 

Grunderna i RB får man i Matt Neuburgs bok REALBasic, the definite guide. (Har sett att det finns nyare böcker...)

 

Det vore förresten intressant att få en bra definition på "riktig programmerare". När jag stött på problem och dryftat dem med välutbildade personer på DSV eller KTH, så har jag inte fått så mycket hjälp. Problemen uppstår ju precis i de här situationerna, dvs när man ska börja flytta data mellan program. Det är väl sådant som "riktiga programmerare" egentligen behärskar, men oftast använder de inte lättanvända databaser eller kreativa språk som RB, utan bygger om alltihopa från grunden. Återigen enligt min blygsamma erfarenhet.

 

Exempel: FileMaker Pro är ett överlägset program när det gäller att bygga databaser med s.k. repeterade fält. Om du exempelvis har 24 inkommande poster i 4 fält, så tvingas du i andra program att definiera 96 celler, låt vara på ett rationellt sätt via arrays. Men i FileMaker behöver du bara definiera 4 repeterade fält, vilket underlättar otroligt när du sedan ska göra samma beräkningar i varje post och ha som underlag för statistiska analyser. Statitistikformler behöver ju bara appliceras en gång per repetition! När man försöker förklara detta för en "riktig programmerare", så får man en hånfull förklaring att "Så gör man inte!"

 

"Riktiga programmerare" vill ofta baka in ALLT i sina applikationer och tänker inte på att beställaren redan har ett antal excellenta program i sin burk. Med ALLT menas ibland en massa mediokra klasser och metoder.

 

Tillbaka till FMP. Det som är så himla bra med den typen av program är att de innehåller färdiga manusredigerare, som gör det möjligt att skicka AppleEvents, exempelvis starta Excel med en viss spreadsheet, där man har ett visst makro, etc. Det går ju naturligtvis bra även inifrån din RB-applikation. Så länge vi befinner oss i Mac-miljön funkar allt det här perfekt.

 

Det enda tråkiga med RB som jag upplever (förmodligen för att jag aldrig begripit mig på fördelarna med SQL) är att man inte har direktingångar till/från FMP. Jag har förresten pratat med en del databasgurus, men hittills inte fått någon bra förklaring varför man ska hålla på och strula med SQL.

 

Någon här som vet?

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...