Avatar billede dcgeek Nybegynder
06. juni 2003 - 19:15 Der er 9 kommentarer og
1 løsning

Strings i delphi

Jeg har 3 variabler, af typen string:

varetype, navn, pris.

Så har jeg en memo1. I den står der følgende:

Varetype-------------Navn-------------Pris

Det jeg så vil nu er, at varetype skal lægges til i memo'en, dvs. at memoen i sidste ende kommer til at indeholde følgende:

Varetype-------------Navn-------------Pris
CPU                  AMD-processor    16.000

men hvordan gør jeg det, hvis ikke jeg i forvejen kender længden af Vareype,navn og pris-variablerne? Jeg har siddet og leget lidt med length og sådan, men jeg har stadig ikke fundet ud af hvordan jeg sætter dem ind på denne måde, med det korrekte mellemrum mellem Navn og Pris (der er jo somsagt nogle ------'er imellem, og der er længere mellem 'CPU' og 'AMD-processor' end der er mellem 'AMD-processor' og '16.000'

Så hvordan sætter jeg variablerne ind, de rigtige steder, så variablen indholdet af variablen Varetype står lige nedenunder "Varetype" (altså den der i forvejen var indtastet i memoen som indgår i "Varetype-------------Navn-------------Pris")

Håber i forstår mig...
Nogen der kan hjælpe?
Avatar billede dcgeek Nybegynder
06. juni 2003 - 19:17 #1
hmm... Eksperten.dk tillægger åbenbart ikke lige det korrekte mellemrum. Men jeg kan fortælle, at det er det første tegn i variablen Varetype, skal lægges til det første tegn i 'Varetype------' og indholdet i variablen Navn skal starte fra det første tegn i 'Navn-------' osv.
Avatar billede abpdk Nybegynder
06. juni 2003 - 19:29 #2
Har du prøvet med format?

Eks.:
memo1.lines.add(format('%15s %15s %15s', [Varetype, Navn, Pris]));
Avatar billede dcgeek Nybegynder
06. juni 2003 - 21:37 #3
nej, det kommer til at stå alt for "roddet"

Det skal se præcis sådan her ud:
http://www.webbyen.dk/hentfil.asp?hentfil=74783

Det jeg meget gerne vil have er, hvis jeg kunne få lavet en funktion, hvor jeg kunne bruge følgende:

indsaet('Computer','Varetype',memo1.text);

hvorefter den så indsætter 'Computer' lige under Varetype, og hvor den starter fra det første tegn i Varetype, dvs. at C'et i Computer skal være lige nedenunder V'et i Varetype, så det ser sådan ud:

Varetype
Computer

og det samme med navn:

Navn
Compaq

hvor den string der skal indsættes, starter fra det første tegn i den anden string der er angivet som parameter i indsaet('Compaq','Navn',memo1.text);
Avatar billede abpdk Nybegynder
06. juni 2003 - 23:20 #4
Ok, det skal altså være venstre-stillet!?
Jeg går ud fra at du kender positionen på Varetype, Navn og Pris. Prøv med:
memo1.lines.add(format('%-15s %-15s %-15s', [Varetype, Navn, Pris]));
Avatar billede dcgeek Nybegynder
06. juni 2003 - 23:30 #5
nej, det hjælper stadig ikke.

Så mit spørgsmål går altså på:
Hvordan skriver jeg en string ind i en memo1, på en bestemt startposition på x-axen?

Dvs. at den skal starte på f.eks. position nr. 5 i memo1.text og skrive "Compaq".
Avatar billede abpdk Nybegynder
06. juni 2003 - 23:36 #6
Det skal lige siges, at hvis det ser rodet ud skyldes det dit valg af skrifttype. Prøv med f.eks. "courier", så virker det.

Hvorfor bruger du ikke bare TStringGrid?
Avatar billede dcgeek Nybegynder
06. juni 2003 - 23:54 #7
nej, det nytter ikke. Kun hvis jeg tilpasser den.
Hvis den f.eks. ser sådan her ud, virker den perfekt:
Varetype--------Navn------------Pris

Men så snart den bliver længere, som f.eks. den her:
Varetype-------------------Navn----------------------------Pris

så virker den ikke.

Derfor skal jeg have at vide hvordan jeg indsætter en tekst på et bestemt sted i memoen (altså kun bestemt på x-aksen).

Den skal f.eks. sætte sig på position 43 og derefter begynde at skrive teksten.
Avatar billede abpdk Nybegynder
07. juni 2003 - 00:13 #8
Ok jeg tror jeg forstår, men hvorfor vil du bruge TMemo? Hvorfor ikke f.eks. TStringGrid eller TListView?
Avatar billede dcgeek Nybegynder
07. juni 2003 - 00:23 #9
fordi det skal udskrives senere i en anden del af et program. Ligger i en størrer sammenhæng med en form-designer jeg har lavet, hvor fakturaen altså der er lavet til at være skrevet i ren tekst, og derfor bliver jeg nød til at tilpasse den efter det her, ellers skal jeg til at lave en helt masse om.
Avatar billede nop Nybegynder
11. juni 2003 - 09:02 #10
Du bliver nød til at bruge et listView fx det er det rigtige. Alle bogstaver (i princippet) har forskellig brede så det kan jo aldrig lade sig gøre (cirka!).
Og du skriver at det skal udskrives senere, ja men du skriver vel ikke et dump direkte fra skærmen (?), så når det skal udskrives må du bygge udskriften igen, denne gang til printeren og der kan du bruge x/y angivelser lige som du vil (på canvaset). Til arbejde du !!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester