Net-Base Magasin

23.06.2026

Trinvis modernisering af ældre VCL-applikationer: Praktisk vejledning til drift, arkitektur og risiko

Mange VCL-skrivebordsapplikationer kører stabilt, men hæmmes ved Windows-opdateringer, databaseskift, sikkerhed og nye grænseflader. Denne vejledning viser, hvordan virksomheder kontrolleret moderniserer VCL-systemer: med en klar målarkitektur, målbare etaper, ren...

23.06.2026

Fra magasinets tema til projektpraksis

Passende service- og tekniske sider til artiklen

I mange virksomheder er den vigtigste forretningssoftware ikke den nyeste, men den, der kører pålideligt hver dag: voksede Delphi/VCL-Desktop-Anvendelser. De styrer processer, afbilder speciallogik og taler med databaser, filsystemer, printere, scannere eller ERP- og DMS-grænseflader. Netop derfor er udskiftning risikabel – og netop derfor er det værdifuldt at kunne modernisere gamle VCL-applikationer trinvis i stedet for at genopbygge alt i et Big-Bang.

Trinvis modernisering betyder: bevare faglig stabilitet, målrettet nedbringe teknisk gæld, indhente krav til sikkerhed og drift og samtidig til enhver tid forblive leverbar og driftbar. For IT-ledelse, administration og tekniske projektansvarlige vejer ikke „den smukkeste“ teknologi tungest, men en plan der realistisk adresserer data, grænseflader, Deployment, rettigheder og vedligehold.

Artiklen fører gennem en praksiserfaren moderniseringsvej: fra statusopgørelse og målarkitektur over dataadgang (f.eks. BDE-udskiftning), 32-/64-Bit og Unicode til REST-APIs, portaltilslutninger og driftskoncepter. Fokus er på beslutninger, der har effekt i hverdagen: opdaterbarhed, driftssikkerhed, Security, Observability (logfiler/metrikker) og kontrolleret migration.

Warum VCL-Systeme modernisieren, wenn sie „doch laufen“?

At en VCL-applikation kører betyder ikke, at den er godt driftbar. Ofte opstår moderniseringsbehov ikke i GUI-designet, men i driften: skift af operativsystem, nye sikkerhedspolitikker, databaseopdateringer, netværkssegmentering eller nye krav til autentificering og protokollering. Mange risici bliver først synlige, når et update står for døren — og så under tidspres.

Typiske drivere i virksomheder:

  • Platformdruck: 32-Bit-begrænsninger, Windows-hårdning, nye Windows-versioner, virtualisering eller Windows 11 ARM64 i dele af miljøet.
  • Datenzugriff und Treiber: forældede DB-lag (f.eks. BDE), dårligt vedligeholdte ODBC-kæder, urene transaktioner, manglende pooling-strategier.
  • Schnittstellenfähigkeit: behov for REST-API, event-integration, tilslutning til portaler eller tredjepartssystemer.
  • Security & Compliance: TLS-standarder, audit-trails, rollemodeller, secrets-håndtering, hærdning af services.
  • Betriebsaufwand: manuelle installationer, skrøbelige updatere, manglende telemetri, vanskeligt reproducerbare fejl.

Modernisering er dermed ikke et kosmetisk projekt, men en beslutning om risiko og driftsomkostninger. Kunsten er at beskytte den faglige kernelogik, mens den tekniske skal i etaper bliver fornyet.

Modernisierung statt Neuentwicklung: Entscheidungsrahmen für IT und Fachbereich

„Neu bauen“ lyder ofte mere entydigt, men i praksis er det ofte et flerårigt program med høj scope-risiko. En trinvis modernisering passer bedre, når applikationen er fagligt bæredygtig, men har tekniske flaskehalse. Afgørende er en klar beslutningsramme, der ikke er ideologisk, men driftsorienteret.

Det har vist sig hensigtsmæssigt at kategorisere langs fire akser:

  • Fachliche Stabilität: Er processer og regler overvejende stabile eller konstant under omstilling?
  • Teknisk tilstand: Er der blokeringer (BDE, 32-Bit-only, ikke Unicode, forældet kryptografi, ikke patchbare komponenter)?
  • Integrationsdruck: Skal APIs, portaler, reporting, DMS/ERP-tilslutninger udvides på kort sigt?
  • Betriebsrisiko: Hvor kritisk er tilgængeligheden, hvor stor er risikoen for nedbrud ved opdateringer?

Hvis faglig stabilitet er høj og de største risici er tekniske, er modernisering ofte den mest pragmatiske vej. Vigtigt: Modernisierung er ikke „blot videreførelse“, men et kontrolleret program med målarkitektur, målepunkter og afleveringskriterier.

Bestandsaufnahme: Was wirklich gezählt werden muss

Den første fase afgør tempo og kvalitet. I stedet for kun at „se kildekoden“ handler det om en driftsmæssig opgørelse. Målet er et pålideligt kort: Hvilke komponenter findes, hvilke afhængigheder er kritiske, og hvilke ændringer giver bivirkninger?

Technische Inventur in 10 Punkten

  • Delphi-Version und Toolchain: Compilerstand, Build-Prozess, Abhängigkeiten, Third-Party-Komponenten.
  • UI und Modulstruktur: monolitiske Forms, dynamiske Packages, plugin-mekanismer.
  • Datenzugriff: BDE/ADO/ODBC/BDE-Ablosung mit nativer Anbindung, transaktionsgrænser, DB-specifikke SQL-funktioner.
  • Datenbanken: Versionen, Wartungsfenster, Backup/Restore, Replikation, Stored Procedures.
  • Integrationen: Dateiimporte, SMTP, SOAP/REST, TCP/IP, Druck/Label, Scanner, Office-Automation.
  • Deployment: MSI, XCOPY, Updater, Rechte, Pfade, Gruppenrichtlinien.
  • Security: Authentifizierung, Rollen, Verschlüsselung, TLS-Versionen, Secrets, Zertifikate.
  • Betrieb: Logs, Diagnosen, Crash-Dumps, Monitoring, Supportprozesse.
  • Datenqualität: Dubletten, forældede Daten, Encoding, Zeitstempel, Multitenancy.
  • Testbarkeit: reproduzierbare Testfälle, Testdaten, Abnahmeprozesse, Regression.

Parallelt er det værd at gennemføre et kort sæt interviews med drift og nøglebrugere: Hvor er problemerne i hverdagen? Hvilke processer er kritiske? Hvilke fejlbilleder koster tid? Heraf kan man udlede en moderniseringsrækkefølge, som ikke kun er teknisk, men også operationelt fornuftig.

Zielarchitektur: Layer-3 als Leitplanke für schrittweise Erneuerung

Trinvis modernisering kræver en målstruktur, ellers lappes kun enkeltproblemer. I mange Delphi-/VCL-beständen mangler en klar adskillelse mellem GUI, forretningslogik og dataadgang. En Layer-3 Architektur (Präsentation, Domäne/Fachlogik, Infrastruktur/Datenzugriff) er en letkommunikerbar rettesnor, uden at man behøver at ombygge hele systemet med det samme.

Vigtigt er IT- og driftsvinklen: Når faglogikken er klart kapslet, kan flere frontends (Desktop, Portal, Service) betjenes senere, grænseflader eftermonteres og dataadgangene konsolideres. Samtidig mindskes risikoen for, at UI-ændringer utilsigtet ændrer dataregler.

Was sich durch Layering im Betrieb verbessert

  • Releasefähigkeit: mindre ændringer lokaliseres, regressioner falder.
  • Sikkerhed: centrale steder for rettigheder, input-validering og audit.
  • Grænseflader: REST-API eller Windows-/Linux-Services kan genbruge forretningslogik.
  • Migration: databaseskift og driverudskiftning rammer primært infrastrukturlaget.

Målarkitekturen behøver ikke være „perfekt“. Den skal være konkret nok til at lede beslutninger: Hvor hører ny logik hjemme? Hvordan kapsles dataadgang? Hvilke API’er er stabile?

Trinvis modernisering af ældre VCL-applikationer: En etapeplan, der fungerer i praksis

En holdbar moderniseringsvej arbejder i etaper, som hver leverer en målbar gevinst og samtidig forbereder næste trin. Det reducerer projekt- og driftsrisiko, fordi der efter hver etape kan rulles en stabil tilstand ud.

Etape 1: Stabiliser build, afhængigheder og release-processen

Mange legacy-problemer er ikke kodeproblemer, men procesproblemer: builds sidder på enkeltmaskiner, installere sker manuelt, afhængigheder er uden versionering. Det første greb er derfor et reproducerbart build og konsistent packaging.

  • Build-automatisering og definerede compiler-/biblioteks-versioner
  • Versionering af tredjepartskomponenter og konfigurationer
  • Standardiserede rollout-trin (inkl. rollback-koncept)

Resultat: Opdateringer bliver mere planlægbare, support kan entydigt identificere tilstande, og teknisk gæld bliver synlig i stedet for skjult.

Etape 2: Modernisere dataadgang (typisk: BDE-udskiftning)

BDE (Borland Database Engine) er i mange miljøer en central blocker: gamle driverkæder, skrøbeligt setup, begrænset understøttelse af moderne databaser og sikkerhedsstandarder. En udskiftning sigter ikke kun på en “anden driver”, men på et klart dataadgangslag.

I Delphi-projekter er BDE-Ablosung mit nativer Anbindung udbredt som dataadgangslag, fordi det understøtter DB-backends (f.eks. PostgreSQL, SQL Server, MariaDB) robust, gør parameterbinding og transaktioner styrbare og forenkler driverstyring. For IT er det afgørende: færre specialinstallationer på klienter, klarere konfiguration og bedre diagnosemuligheder ved forbindelsesproblemer.

Vigtige migrationsaspekter i denne etape:

  • Gør transaktionsgrænser eksplicitte (hvor begynder/slutter en faglig handling?).
  • Identificer SQL-varianter (DB-specifikke funktioner, datumslogik, låse).
  • Standardiser forbindelseshåndtering (timeouts, pooling-strategi, genforsøg kun målrettet).
  • Konfigurationshygiejne: forbindelsesstrenge, certifikater, secrets må ikke hardcodes.

Etape 3: Gør Unicode- og 64-bit-understøttelse planbar

Unicode-migration og 64-bit-overgang er mindre „et hak i compileren“ og mere et kvalitetsemne. Unicode vedrører tegnstrenge, filnavne, grænseflader og databaser (Collation/Encoding). 64-bit vedrører pointerstørrelser, eksterne DLL’er, printer-/scanner-drivere og COM-afhængigheder.

For projektansvarlige er det forsvarligt ikke at udskyde disse emner til en slutspurt, men behandle dem som en separat etape med klare testcases. Typiske faldgruber er eksportformater (CSV/Fixed Width), PDF- og reporting-workflows samt udveksling med ældre systemer, der stadig forventer 8-Bit-Encoding.

Etape 4: Opgradere grænseflader – uden at destabilisere desktopmiljøet

Mange virksomheder vil levere data fra en VCL-applikation til portaler, BI eller tredjepartssystemer. Den sikre vej er som regel en API-facade: en klart versioneret REST-API (HTTP-baseret grænseflade), der kontrolleret eksponerer forretningslogikken. Dermed bliver klienten ikke „fjernstyret“, men faglige operationer stilles til rådighed som services.

Det adskiller ændringer: Desktop forbliver stabil for eksisterende brugere, mens nye integrationer vokser via API’en. Vigtigt for drift og sikkerhed:

  • Authentifizierung/Autorisierung: f.eks. token-baseret, valgfri integration i SSO (ofte SAML 2.0 i virksomhedslandskaber).
  • Rate Limits und Timeouts: beskyttelse mod utilsigtet belastning fra batch-integrationer.
  • Versionierung: API-versioner undgår breaking changes for tilknyttede systemer.
  • Audit: hvem har hvornår ændret hvad (fagligt), ikke kun „Request kam an“.

Trin 5: Suppler portal- eller servicekomponenter (C# oder Delphi – arkitektonisk rent)

I mange moderniseringer opstår ved siden af Desktop en kundeportal eller et internt webområde. Om denne del implementeres i C# eller Delphi er mindre afgørende end den fælles arkitektur: et konsistent datamodel, klare ansvarsfordelinger og stabile grænseflader. For IT tæller, at drift, logging, rettigheder og deployment passer ind i den eksisterende landskab (f.eks. Microsoft IIS for web-andele eller Linux-Services for baggrundsbehandling).

Praktisk er en opdeling efter opgaver:

  • Desktop (VCL): procesnær brugergrænseflade, offline-/LAN-nære funktioner, enhedssnitflader.
  • Services: baggrundsjob, valideringer, import/eksport, købehandling, tidsstyrede kørsler.
  • Portal: self-service, statusforespørgsler, dokumenter, workflows via browser.

Dermed opstår et system, der kan vokse uden at risikere den eksisterende kerne.

Database-modernisering: Fra „läuft“ til „wartbar“

Mange VCL-applikationer er tæt vævet ind i en databasehistorie: Paradox-efterladenskaber, Firebird, ældre SQL-Server-versioner eller hybridformer. En databasemigration er succesfuld, når den forstås som et data- og driftprojekt, ikke som en ren skemakopiering.

Hvad IT bør afklare før en migration

  • Backup/Restore und RPO/RTO: Hvor hurtigt skal man være online igen, og hvor meget datatab er acceptabelt?
  • Wartungsfenster und Downtime-Strategie: Big-Bang, parallelkørsel eller inkrementel omstilling.
  • Zeichensätze und Collations: vigtigt ved Unicode og sorterings-/søgelogik.
  • Transaktionsisolation und Locking: relevant ved høj parallelitet og batch-jobs.
  • Reporting: direkte DB-adgange fra tredjepartsværktøjer (BI, Excel, ETL) skal fortsat fungere.

For mange virksomheder er PostgreSQL et oplagt valg, fordi det er forholdsvis let at drive som platform og tilbyder klare værktøjer til backup, overvågning og rettighedsstyring. Afgørende er dog: Applikationen må abstrahere SQL- og typforskelle konsekvent, ellers bliver hver forespørgsel en specialtilfælde. Netop her betaler et konsolideret dataadgangslag (f.eks. FireDAC) sig.

Security og rettigheder: Modernisering uden ny angrebsflade

Legacy-skrivebordsapplikationer blev ofte designet i en tid, hvor „på LAN“ automatisk betød „tillid“. I dag er det sjældent acceptabelt: segmentering, zero-trust-tilgange, fjernarbejde og revisionskrav øger presset. Modernisering må derfor inkludere sikkerhed uden at lamme driften.

Konkrete tiltag, som med fordel kan indføres gradvist:

  • Central autentificeringsmekanisme: klar adskillelse af identitet (login) og roller (adgangsrettigheder).
  • Transportkryptering: hold TLS opdateret, planlæg certifikatstyring.
  • Secrets-håndtering: ingen adgangskoder i INI-filer; brug i stedet sikre stores eller centralt styrede secrets.
  • Audit-Trail: logfør faglige ændringer (hvem/hvad/hvor og hvornår), ikke kun tekniske logs.
  • Inputvalidering: især for nye API’er skal validering være stringent og centraliseret.

Vigtigt for beslutningstagere: Sikkerhed er ikke et „ekstra“, man sætter på til sidst. Når API’er, tjenester eller portaler etableres, skal sikkerhedsarkitekturen være en del af målarkitekturen fra start.

Drift og administration: Hvad modernisering mærkbart forbedrer

Det største udbytte ved en trinvis modernisering findes ofte i områder, som tidligere sjældent fyldte i kravspecifikationen: overvågning, fejlsøgning, rollout og beredskab. Især for VCL-applikationer, der har vokset organisk over mange år, kan en lille pakke af driftsforbedringer reducere supportbyrden markant – uden at slutbrugeren straks ser et nyt UI.

Checkliste for „driftsparate“ komponenter

  • Konfigurationsstandard: centralt dokumenteret, miljøspecifik (Dev/Test/Prod), efterprøvelige defaults.
  • Strukturerede logfiler: hændelser med korrelation (f.eks. sag-ID), klare logniveauer, ingen følsomme data i klartekst.
  • Monitoring: healthchecks for services, forbindelsesstatus til databasen, jobkørselstider, kø-længder.
  • Installationsprogram/opdatering: stille installation mulig, rollback-strategi, korrekt rettighedshåndtering.
  • Fejldiagnose: reproducerbar crash-information, klare supportdata (version, modulstatus, konfiguration).

Særligt relevant for administratorer: Når bagvedliggende logik flyttes fra desktop til Windows- eller Linux-tjenester, kan køretider, RESTart-adfærd og ressourceforbrug styres bedre. Samtidig reduceres risikoen for, at „en åben klient“ blokerer en batchproces.

Test- og migrationsstrategi: Parallelkørsel frem for stilstand

Trinvis modernisering står og falder med regressionstests. Der menes ikke kun unit-tests (som ofte mangler i legacy), men især faglige end-to-end-scenarier: typiske forløb, kritiske undtagelser, store datamængder, udskriftskørsler, importer/eksporter. For virksomheder er det vigtigt, at disse tests bliver planbare og gentagelige.

Pragmatiske tilgange, når der ikke findes en testbase

  • Golden Master: for definerede input fastholdes output/rapporter/datatilstande og sammenlignes med nye tilstande.
  • Testdatakuffert: anonymiserede databaser eller syntetiske data med repræsentative særtilfælde.
  • Trinvise grænsefladetests: API-kontrakter og importformater som verificerbar specifikation.

Ved migrationer (database, Unicode, 64-bit) betaler det sig at køre parallel drift, hvor det er muligt: nye komponenter kører først sideløbende med det eksisterende og leverer resultater eller rapporter, uden at det eksisterende straks tages ud af drift. Dermed skabes pålidelige sammenligninger, og omlægningen bliver en kontrolleret beslutning i stedet for et spring ud i det ukendte.

Typiske faldgruber – og hvordan man undgår dem

Mange moderniseringer fejler ikke på grund af teknikken, men på grund af forkert rækkefølge eller manglende styringsrammer. Tre mønstre optræder særligt ofte:

  • UI først: Et nyt frontend uden afklarede forretningslogik- og dataadgangslag flytter alene problemerne og gør efterfølgende skridt dyrere.
  • »Bare udskift drivere«: Ved BDE-udskiftning eller DB-skift uden transaktions- og SQL-gennemgang opstår svært lokaliserbare fagfejl.
  • Integration uden sikkerhed: Et hurtigt eftermonteret API uden rollemodel, audit og ratebegrænsninger bliver en permanent angrebsflade.

Modsvaret er en etapeplan med klare kvalitetskriterier: Hvert trin skal kunne deployes, medbringe monitoring og bestå definerede faglige tests. Så bliver modernisering en seriel forbedringsproces, ikke et varigt projekt.

Konklusion: Modernisering er et program – ikke en begivenhed

Gamle VCL-applikationer er ofte rygraden i etablerede processer. Den, der erstatter dem, erstatter ikke kun kode, men driftsviden. Den, der derimod moderniserer dem trinvis, kan kombinere stabilitet og videreudvikling: konsolidere dataadgang (inklusive BDE-udskiftning), gøre Unicode/64-bit planlæggeligt, tilføje APIs og services ordentligt og aflaste driften betydeligt med logging, monitoring og reproducerbare releases.

Det afgørende er arkitekturen som styringsramme: Forretningslogik og dataadgang adskilles, så nye krav (portal, grænseflader, rapportering, ny database) kan implementeres kontrolleret. Dermed opstår en digital virksomheds løsning, der ikke kun fungerer, men som også kan drives pålideligt under opdateringer, sikkerhedskrav og integrationspres.

Hvis I ønsker at etablere en robust moderniseringsvej for jeres VCL-/Delphi-bestandsapplikation, lad os strukturere udgangssituationen, risici og etaper i en teknisk indledende samtale:

I det faglige miljø spiller også Delphi modernisering og Vcl legacy-applikation en vigtig rolle, når integrationer, dataflows og videreudvikling skal spille ordentligt sammen.

Drøft projekt eller moderniseringsforløb med Net-Base.

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.

Del indlæg

Del dette indlæg direkte

LinkedIn, X, XING, Facebook, WhatsApp og e-mail er straks tilgængelige. Til Instagram forbereder vi link og kort tekst med det samme.

E-mail

Instagram åbner i en ny fane. Linket og kortteksten kopieres på forhånd til udklipsholderen.