när man klarar alla nybörjarkurser, kan progga lite mot WinAPI:n, behärskar delphi grundläggande...
...men ändå inte fattar ett smack av "proffskod"!
hur går man egentligen vidare?
allt i alla böcker som jag har läst tycker jag mig kunna. (nu kanske det inte stämmer i verkligheten...)
Vill helst inte ploga igenom böcker med svårläst engelska.
någon som har ett bra tips på hur man kommer vidare?
upp ur nybörjarträsket - upp till "hacker"-klassen!
säkerligen är det fler än jag som har ett liknande problem.
Det stora steget för nybörjare är att gå över helt till object-orienterad (OO)kod. Om man sitter i Delphi och trycker ut lite komponenter och skapar lite events till dem är det lätt att tro att man sitter och skapar OO kod när man egentligen programmerar vanlig uppifrån och ner kod (strukturerad kod).
Jag hade själv stora problem med att inse fördelarna med OO kod innan jag började jobba med programmering på heltid. Hemmaprogrammering duger det oftast med vanlig programering.
Vet inte om det finns nån specifik Delphi bok på svenska om OO kodning men du kan ju alltid höra med den lokala bokhandeln eller på nätet.
Att börja med OOP brukar ochså göra att man bättre förstår hur delphis klasser(vcl m.m) funkar.
Har du testat att göra någon koponent.
Är inte någon expert på OOP men när man pysslar med komponenter brukar OOP bli ett naturligt sätt att programmera.
kan inte OO-kod vara stukturerad?
eller kanske är det jag som inte fattat innebörden av OO-kod
kan någon isåfall tipsa om var man kan läsa mer om OO-programmering?
nej, jag har inte programmerat någon komponent, men ett antal unit:ar...
appropå det...
jag har en unit som har två funktioner med samma namn, men som resulterar i olika datatyper. problemet är att jag inte kan exportera funktionerna. för det ska väl gå, eller?
jag tänker på TWebBrowser som har ett antal olika versioner av Navigate().
Någon som har nån idé som kan hjälpa?
Att deklarera två procedurer med samma namn kallas overloading. Och för att inte delphi ska gnälla vid kompilerning så måste du deklarera dessa med Overload.
Det Overload gör är väl helt enkelt att tala om att function är overload ;-).
Det bästa är nog att kolla i hjälpen på "Overloading procedures and functions".
ett litet tillägg är att det måste vara skillnader i anropet till procedurerna/funktionerna som anropas. Sedan beroende på med vilken typ av parameter du skickar med så kör den olika procedurer.
om man använder StrTillTal i exemplet nedan så blir det fel!
Delphi kan inte fatta vilken av funktionerna den ska använda...
nån idé om hur jag ska lösa detta? (vill fortfarande att funktionerna ska ha samma namn).
- - - - - - - - - - - - - - - - - - - - - - -
unit exempel;
interface
uses Windows;
function TalTillStr(tal: integer): string; OverLoad;
function TalTillStr(tal: real): string; OverLoad;
function StrTillTal(s: string): real; OverLoad;
function StrTillTal(s: ShortString): integer; OverLoad;
var StrTillTalDef: Integer = 0;
implementation
function StrTillTal(s: string): real; OverLoad;
var errorcode: integer; tmp: real;
begin
Val(s, tmp, errorcode);
if errorcode <> 0 then
result := StrTillTalDef
else result := tmp;
end;
function StrTillTal(s: ShortString): integer; OverLoad;
var errorcode: integer; tmp: integer;
begin
Val(s, tmp, errorcode);
if errorcode <> 0 then
result := StrTillTalDef
else result := tmp;
end;
function TalTillStr(tal: real): string; OverLoad;
var tmp: string;
begin
Str(tal:0:0, tmp);
result := tmp;
end;
function TalTillStr(tal: integer): string; OverLoad;
var tmp: string;
begin
Str(tal, tmp);
result := tmp;
end;
Om man tex skriver
StrTillTal('111');
så går det ju inte att veta om du menar att '123' ska vara en shortstring eller en string. Dessutom som finns shortstring kvar för bakåtkompabilitet.
Tror inte det finns någon lösning om du måste deklarera procedurerna exakt som du gjort. Vad vill du uppnå?
man tycker att delphi kunde fatta att om man tilldelar en realtalsvariabel := StrTillTal(strangen) att den ska välja den version av StrTillTal som passar bäst.