Fra magasinets tema til projektpraksis
Passende service- og tekniske sider til artiklen
Delphi til virksomhedsapplikationer er i mange organisationer ikke et nostalgisk valg, men en driftmæssig realitet: voksede desktop-klienter, services og dataadgang, der gennem årene har understøttet processer stabilt. Når IT-ledelsen eller administratorer har ansvar for tilgængelighed, vedligeholdelse og sikkerhed, stilles sjældent spørgsmålet „nybygge eller beholde?“, men: Hvordan moderniserer vi kontrolleret uden at sætte den løbende produktion i fare?
Denne artikel sætter Delphi i kontekst i 2026 set fra driftens og IT-beslutningstagernes perspektiv. Fokus er ikke framework-detaljer, men de punkter, der betyder noget i hverdagen: databaseadgang (inklusive BDE-udskiftning), integrationer og REST-APIs, deployment som Windows- og Linux-services eller Linux-daemon, security-basics, 32/64-bit og Unicode-migrering samt arkitektur, der kan bære teams over år. Målet er et robust beslutningsgrundlag: Hvornår er Delphi fornuftigt, hvornår er det risikabelt, og hvilke moderniseringsveje har vist sig at virke?
Hvorfor Delphi fortsat anvendes i virksomheder
Delphi-applikationer findes ofte dér, hvor processer ikke er „nice to have“, men kerneforretning: ordrehåndtering, produktion, logistik, laboratorie- eller udstyrsintegration, service og feltservice, interne portaler omkring datakvalitet eller godkendelser. Sådanne procesnære løsninger er ofte gennem årene fintrimmet til arbejdsgange, specialtilfælde og integrationspunkter. Et komplet genbyg ville ikke kun medføre udviklingsomkostninger, men især risiko: procesviden går tabt, skjulte funktioner bliver først synlige i drift, og overgangsfasen opsuger kapacitet i IT og fagafdelinger.
Delphi er i denne kontekst interessant, fordi det typisk dækker tre krav godt:
- Stabil desktop- og service-runtime: Mange applikationer kører som VCL-desktop-klient eller som Windows- und Linux-Services i mange år med høj pålidelighed. For driften er det ofte en væsentlig faktor.
- Direkte databaseadgang og god performance: Delphi-applikationer arbejder hyppigt tæt på SQL og transaktioner. Det er nyttigt, når procestrin og datakonsistens er i fokus.
- Inkrementel modernisering: Mange steder kan man modernisere trinvis: udskifte dataadgang, tilføje integrationer, refaktorere enkelte moduler, skifte til 64-bit eller Unicode – uden Big-Bang.
Bagdelen: Netop fordi disse systemer har kørt så længe, ligger der ofte teknisk ballast i dem. Forældede drivere, manglende adskillelse af UI og logik, historisk opbyggede adgangsmodeller eller uklare installationsrutiner bliver på sigt dyre i drift. Nytten af Delphi afhænger derfor mindre af „sproget“ og mere af moderniserbarheden af hele systemet.
Delphi til virksomhedsapplikationer: Typiske systemlandskaber og integrationsmønstre
I praksis er Delphi sjældent et isoleret enkeltprogram. Ofte er det en byggesten i et landskab af databaser, identiteter og øvrige systemer. For drift og administration er det afgørende, hvor ryddeligt disse koblinger er. Typiske mønstre er:
Desktop-klient plus central database
Det klassiske setup: en Windows-client, central SQL Server, PostgreSQL, Firebird eller MariaDB. Det bliver problematisk, når klienter arbejder direkte med produktive tabeller, men forretningslogik er spredt over år i UI-Events og SQL-strenge. Modernisering betyder her ofte: standardisere dataadgang, definere transaktionsgrænser og tilføje logging/monitoring – uden at rive forretningsprocessen itu.
Tjenester i baggrunden: Windows-Service oder Linux-Daemon
Mange virksomheder driver Delphi-komponenter som „Headless“-tjenester: import/eksport, grænseflader til ERP/DMS/CRM, udskrifts- og PDF-workflows, natlige batch-jobs eller polling af enheder. En Windows-Service er en tjenesteproces under Windows med defineret start-/stop-logik og typiske krav til logging og recovery. Linux-Services er funktionelt tilsvarende, men køres oftest via systemd (start, restart, health-checks). I driften er følgende relevante: korrekt konfiguration (uden „INI-Datei im Programmverzeichnis“), rettighedskoncept, rotationslogs samt evnen til planlagt udrulning af opdateringer.
REST-API als Brücke zu Portalen und Fremdsystemen
Hvis Delphi-applikationer historisk „nur Desktop“ var, er den hyppigste moderniseringsidé at supplere med en REST-API. REST står for en webbaseret grænsefladestil, hvor systemer kommunikerer over HTTP med klare ressourcer og metoder. For virksomheder er det vejen til at muliggøre kundeportaler, mobile processer, BI/Reporting eller eksterne partnerintegrationer uden nødvendigvis at udskifte desktop-klienten. Afgørende er ikke, at „API’en eksisterer“, men at autentificering, rate-limits, versionering, fejlbillede og monitoring er operationelt håndterbare.
Modernisering ohne Big-Bang: Was sich bewährt hat
Modernisering er succesfuld, når den er planlægningsbar: klart Scope, definerede risici, målbare milepæle. For Delphi-bestande kan dette ofte opnås ved at prioritere moderniseringen ud fra driftsproblemer – ikke ud fra „schönem Code“.
1) Datenzugriff konsolidieren (BDE-Ablösung, FireDAC, Treiberstrategie)
En hyppig flaskehals er den historiske Borland Database Engine (BDE). Den er problematisk i moderne miljøer: deployment, 64-Bit, drivertilgængelighed og sikkerhedsstandarder passer ofte ikke længere. En BDE-Ablösung er sjældent blot en udskiftning af et bibliotek. Den berører SQL-dialekter, felttyper, sorteringer, transaktioner og fejladfærd i drift.
I mange projekter er en BDE-Ablösung mit nativer Anbindung (en dataadgangsarkitektur i Delphi, der forbinder forskellige databaser via passende drivere) et praktisk moderniseringstrin, fordi det giver en ensartet abstraktion og mere moderne driverveje. Afgørende er migrationsstrategien: Ikke alt på én gang, men modulvist – med klare regressionstests omkring bogføringer, bilagsnumre, låsning og paralleldrift.
Til en dybere indsigt i risici og fremgangsmåder kan man internt henvise til bidrag som „BDE-Ablösung: So modernisieren Sie Delphi-Bestandsanwendungen ohne Betriebsrisiko“ eller „Paradox Datenbanken modernisieren“, hvis sådanne legacy-datakilder er i spil.
2) 64-Bit und Unicode als Betriebsvoraussetzung verstehen
Mange Delphi-applikationer er historisk 32-bit og delvis ikke konsekvent Unicode-understøttede. I moderne Windows-miljøer er 64-bit ikke blot et performance-spørgsmål, men en forudsætning for drivere, Office-integration, store datamængder og fremtidssikring. Unicode er centralt, når internationale data, rene CSV-/XML-/JSON-grænseflader eller konsistent sortering er relevante.
For IT-ansvarlige er det vigtigt: Denne migration er ikke bare „kompilér og færdig“. Typiske risici er ændrede strenglængder, antagelser om tegnsæt i grænseflader samt inkompatibiliteter med ældre DLL’er eller udskrifts-/scanningskomponenter. En pålidelig planlægning indeholder derfor en inventarisering af afhængigheder (printere, scannere, Signatur, Office, enheder) samt testdata med specialtegn og realistiske datavolumener.
3) Arkitektur: trinvis oprydning (Layer-3, faglogik, grænseflader)
Mange eksisterende systemer fungerer, fordi de er „alt i ét“: UI, faglogik og dataadgang tæt sammenflettet. Det bliver dyrt i drift, så snart man får brug for nye brugerflader, webadgang eller automatisering. En velafprøvet tilgang er en Layer-3 arkitektur: opdeling i præsentation (UI), faglogik (regler, Workflows) og dataadgang (SQL/Transaktionen). Værdien er mindre akademisk end praktisk: Ændringer i grænseflader eller database påvirker klarere lag, testbarheden øges, og fejl kan isoleres hurtigere.
Vigtigt er rækkefølgen: Start ikke med at „refaktorere alt“, men stabilisér de kritiske proceskerner. Ofte starter man med særligt fejlbehæftede områder: Buchungslogik, stamdatahåndtering med sideeffekter, baggrundsjob og import af grænseflader. For hvert modul øges håndterbarheden af hele systemet.
Databaser i fokus: PostgreSQL, SQL Server, MariaDB og migrationsemner
Virksomhedsapplikationer står og falder med data. Delphi er her normalt ikke problemet – flaskehalsen er den historisk opbyggede database- og adgangslogik. Typiske scenarier:
PostgreSQL i produktiv drift med Delphi
PostgreSQL vælges ofte i virksomheder, når man søger en robust open source-database med god SQL-funktionalitet og klare driftsværktøjer. I Delphi-miljøet er vigtige: korrekt Treiberkonfiguration, defineret Transaktionsisolation samt en klar migrationsprocedure til skemaændringer (f.eks. versionerede database-migrationer, der kører med i releaseprocessen). For administratorer er det også relevant, at Monitoring (Locks, Slow Queries) og Backup/RESTore-strategier planlægges tidligt i stedet for først ved performanceproblemer.
SQL Server: Stabil, aber oft mit technischem Ballast
Hvis Delphi i årevis har været bundet til SQL Server, er opsætningen ofte grundlæggende stabil, men ikke nødvendigvis let at vedligeholde. Typiske problemområder er dynamisk sammensatte SQL-Statements, inkonsekvent Transaktionssteuerung eller manglende Parametrisierung (hvad angår Security og Performance). En modernisering fokuserer derfor ofte på:
- Ensartede Transaktionsgrænser: Hvem starter/committer/tilbagefører – og hvor?
- Parametrisierung: for at undgå SQL-Injection og for mere stabile Query-Pläne.
- Klare Fehlerbilder: Timeouts, Deadlocks og Sperrkonflikte skal være synlige i logningen.
Her kan man også internt linke til et uddybende indlæg som „SQL Server Anbindung in Delphi modernisieren“, hvis læserne præcis befinder sig i dette felt.
Database-migrationer: Firebird, Paradox, gamle strukturer
Når ældre databaser er involveret (f.eks. Paradox eller ældre Firebird-installationer), bliver modernisering hurtigt til et dataprojekt. For driften er følgende punkter afgørende:
- Parallelkørsel og Cutover-Plan: Hvor længe kører det gamle og det nye parallelt? Hvordan opdages forskelle?
- Datakvalitet: Dubletter, ugyldige datoværdier, tegnsætsproblemer dukker ved migrationer pålideligt op.
- Rettigheder og revision: Hvem må se/ændre hvad? Hvordan logges ændringer, så de er sporbare?
- Rollback-Fähigkeit: Hvad sker der, hvis en kritisk proces ikke fungerer på go-live-dagen?
En Delphi-modernisering bliver dermed automatisk også en disciplin inden for release- og change-management: klare versioner, reproducerbare Deployments, rene Backups og definerede acceptkriterier.
Grænseflader og integration: REST-API, identiteter, protokoller
Det største funktionelle løft i moderne virksomheds-IT er ofte ikke brugerfladen, men integrationskapaciteten. Bestående applikationer skal i dag levere og modtage data: kundeportaler, DMS/ECM, ERP, BI, E-Mail-Gateways, signaturtjenester, maskiner eller IoT-Gateways.
Eftermontere REST-API: Hvad drift og sikkerhed har brug for
En REST-API udvider en Delphi-applikation med standardiserede HTTP-endepunkter. For beslutningstagere er gevinsten klar: man kobler nye kanaler (portal, mobil, partnere) fri fra desktop-releasecyklussen. For driften er prisen også klar: en API er et offentligt løfte, som skal være stabil, overvåget og sikret.
I praksis bør følgende aspekter fastlægges tidligt:
- Autentificering/Autorisation: Token-baseret, ideelt integreret i eksisterende identiteter (f.eks. SAML 2.0 som single-sign-on-standard i virksomheder, eller efterfølgende token-udstedelse).
- Versionering: Nye felter og endepunkter må ikke bryde eksisterende integrationer.
- Rate-Limits og beskyttelse mod misbrug: Ikke kun relevant eksternt; interne systemer kan også skabe belastning ved fejlkonfiguration.
- Struktureret logging: Request-ID, brugerkontekst, køretider, fejlkoder – til support og revision.
TCP/IP, filgrænseflader og „usynlige“ integrationer
Udover REST findes der i modne landskaber mange pragmatiske integrationer: TCP/IP-sockets til enheder, filimporter (CSV/XML), e-mail-baserede overførsler eller udskrifts-/scan-workflows. Disse er ofte forretningskritiske, men dårligt dokumenterede. Modernisering betyder her ofte: kortlægge grænseflader, versionere formater, definere fejlstier og indføre driftalarmer. Det er mindre glamourøst end en ny UI, men reducerer nedetid og supporttider mærkbart.
Drift i dagligdagen: Deployment, Updates, Monitoring, Supportfähigkeit
Et Delphi-system kan være fagligt fremragende og alligevel virke dyrt, hvis driften ikke er velorganiseret. Typiske omkostningsdrivere er manuelle Updates, uafklarede konfigurationssteder, manglende telemetri og support, der kun fungerer via „Bitte Screenshot schicken“.
Reproducerbart Deployment i stedet for „Setup von Hand“
For virksomhedsapplikationer er gentagelige udrulninger afgørende: samme tilstand i test, staging og produktion, efterprøvbare rollbacks, klare afhængigheder. I Delphi-miljøet vedrører det typisk:
- Client-Deployment: MSI/opsætning, auto-opdateringsmekanismer eller softwaredistribuering via eksisterende værktøjer.
- Service-Deployment: tjenestekonto, rettigheder, opstartstype, gendannelsesindstillinger, afhængigheder.
- Konfiguration: adskilt fra binærpakken, versionsstyret, styres pr. miljø.
Monitoring og logging, der supporten faktisk har gavn af
I mange eksisterende systemer findes der logs, men de er ikke analyserbare: for meget støj, ingen korrelation, ingen kontekstdata. For drift viser et minimumsstandard sig som nyttigt:
- Strukturerede Logs: tidsstempel, komponent, severity, request/job-ID, bruger/mandant (hvis relevant).
- Metriken: jobkørselstider, kølængder, fejlrater, forbindelsesafbrydelser.
- Health-Checks: Kan tjenesten nå databasen og afhængige systemer?
Det forbedrer direkte tilgængeligheden: forstyrrelser kan afgrænses hurtigere, og mange „sporadiske fejl“ bliver reproducerbare, fordi kontekstdata ikke længere mangler.
Sikkerhed og Compliance: Hvad Delphi-systemer i dag skal opfylde
Sikkerhed er i virksomhedsapplikationer mindre en enkelt funktion end et sæt minimumsstandarder. Delphi er hverken automatisk sikker eller usikker; afgørende er arkitektur og driftsdisciplin.
Typiske Security-Baustellen i eksisterende applikationer
- SQL-Injektion og uparametriserede forespørgsler: Særligt relevant, når input kommer fra importer eller grænseflader.
- Rettighedskoncept: Roller vokser historisk uden klar dokumentation. Det slår tilbage ved audits og ved mandantfunktionalitet.
- Transportkryptering: Grænseflader og databaseforbindelser skal i mange miljøer være krypterede.
- Afhængigheder: Gamle DLLs, gamle kryptobiblioteker, uklare licensforhold eller komponenter, der ikke længere vedligeholdes.
I moderniseringsprojekter er det fornuftigt ikke at behandle sikkerhed som „slutningen af checklisten“, men som et tværgående område: dataadgang, API, deployment, logging og brugeradministration skal passe sammen. Især ved REST-APIer er korrekt autentificering (f.eks. SSO via SAML 2.0 eller centralt administrerede identiteter) ofte det punkt, hvor et projekt går fra „kører“ til „driftsmæssigt ordentligt“.
Hvornår Delphi det rigtige valg er – og hvornår ikke
For beslutningstagere er spørgsmålet om teknologi sjældent ideologisk, men risikodrevet. Delphi kan i virksomhedsapplikationer forblive et fornuftigt fundament, hvis bestemte rammebetingelser er opfyldt.
Gode grunde til at beholde og modernisere Delphi
- Stor procesfit i det eksisterende: Applikationen afspejler arbejdsgange, som er svære at erstatte i forretningsområdet.
Advarselstegn, hvor man bør gribe ind tidligt
- Uklare afhængigheder: „En eller anden DLL“ fra gamle dage er forretningskritisk, men ingen ved hvorfor.
- Manglende test- og release-disciplin: Ændringer bliver direkte i produktion „repareret“.
- UI- og datalogik uløseligt forbundet: Hver ændring skaber sideeffekter og lange supportsløjfer.
- Integration bliver et tvangsmiddel: Hvis nye portaler/partnere/BI-krav kun er mulige med workarounds, mangler der ofte en API- og lagdelingsstrategi.
„Nicht Delphi“ er er dog ikke automatisk løsningen. Ofte er den egentlige beslutning: Ønsker vi en kontrolleret moderniseringsvej med planbare releases – eller en genopbygning med længere parallelfase, dobbelte tests og organisatorisk friktion? Denne afvejning bør baseres på processrisiko, datarisiko og driftsrisiko, ikke på teknologitrends.
Pragmatisk køreplan: Sådan starter virksomheder struktureret
Et fornuftigt udgangspunkt undgår både aktionisme („Alt nyt!“) og stilstand („Det kører jo!“). I praksis har en fremgangsmåde i klare arbejdspakker vist sig effektiv:
- Teknisk statusopgørelse: afhængigheder, databaser, drivere, services, grænseflader, udrulningsveje, kritiske batch-jobs.
- Prioriter driftsrisici: Hvad forårsager nedbrud, manuelle indgreb eller sikkerhedsrisici?
- Modernisering i skiver: f.eks. først dataadgang/BDE-Ablosung mit nativer Anbindung, derefter logging/monitoring, så REST-API, og dernæst arkitekturmoduler.
- Definer release- og rollback-proces: inklusive database-migrationer, backups, cutover-planer.
- Dokumentation, der understøtter drift: ikke som en roman, men som klare runbooks: start/stop, typiske fejl, recovery.
Denne køreplan er bevidst driftsorienteret. Den sikrer, at modernisering ikke ender i projektmappen, men i en software, som i daglig drift kan udrulles og supporteres.
Konklusion: Delphi er mindre „gammel“ end „driftsnær“ – når modernisering planlægges
Delphi til virksomhedsapplikationer er stærk, hvor stabilitet, datakontrol og procesnære arbejdsgange tæller. Den egentlige løftestang ligger ikke i sproget, men i en moderniseringsstrategi, der behandler drift, sikkerhed og data ligeværdigt: BDE-udfasning og FireDAC-strategi, 64-bit/Unicode, rene lag (Layer-3), REST-API’er med autentificering, reproducerbart deployment samt logging og monitoring, der forkorter supportsager.
Den, der handler sådan, kan bevare de faglige egenskaber i vækstede systemer og teknisk bringe dem i en tilstand, der er bæredygtig i flere år – uden risikabelt Big-Bang og uden at tvinge organisationen ind i en endeløs parallelverden af gammelt og nyt. Hvis I ønsker at vurdere tilstanden i jeres Delphi-landskab struktureret og udlede en moderniseringsvej, er en teknisk indledende samtale ofte den hurtigste vej til klarhed:
I det faglige miljø spiller også Delphi Modernisierung en vigtig rolle, når integrationer, dataflow og videreudvikling skal fungere gnidningsfrit sammen.
Næste trin
Når et emne bliver til et reelt projekt, bør arkitektur, eksisterende systemer og drift tidligt vurderes samlet.
Vi støtter ikke kun ved enkeltspørsmål, men også når kildekodeudsnit, legacy-komponenter eller portalidéer skal udvikles til et robust virksomhedsprojekt.
- Eksisterende tilstand, målbillede og tekniske risici vurderes samlet.
- REST, dataadgang, portaler og idrulning bliver ikke udskudt som eftertanker.
- I ser tidligt, hvilken vej der er økonomisk og driftsmæssigt holdbar.