Avatar billede whynot Nybegynder
25. december 2003 - 15:05 Der er 6 kommentarer og
1 løsning

deklaration af longstring

Halløjsa

jeg har en tekststreng som er længere end en string kan håndtere.. en string kan tilsyneladende klare 255tegn - hvilket ikke er nok i dette tilfælde..

Jeg har læst i delphi's hjælp noget omkring en "longstring".. og at den kan klare det antal tegn som man skal bruge - eller hvad der kan være i hukommelsen.

MEN... hvordan pokker deklarerer man en longstring?.. fordi det er ikke "tempstring: longstring;"

..men hvad er det så?
Avatar billede hrc Mester
25. december 2003 - 15:18 #1
Uha. Det med de gamle slags strenge er noget forvirrende. Der er flere implementeringer af typerne. Når du installerer Delphi, så vælger den automatisk den "sjove" (som sikkert er en forklædt nul-termineret streng). Den kan blive op til 2Gb stor og det burde række i dit tilfælde. Det er der sikkert ikke pillet ved så forklaringen er sikkert at du har skrevet noget lignende:

  st : string[200];

Delphi fortolker dette som en gammel strengtype (max lgd 255). Skriv i stedet:

  st : string;

Hvis du skal sætte længden så kan du ikke længere bruge st[0] := chr(lgd) - nu skal du bruge SetLength(st,lgd) Størrelsen er helt dynamisk og nem at bruge
Avatar billede hrc Mester
25. december 2003 - 15:20 #2
Det er i øvrigt sjældent at man behøver bruge SetLength.
Avatar billede whynot Nybegynder
25. december 2003 - 15:20 #3
hmmm.. jeg har faktisk blot skrevet:

st: string;

og alligevel skriver den at den højest må være 255tegn lang.. ?

jeg har fundet noget som hedder ansistring... men jeg får stadig den samme fejl?!?!

skørt
Avatar billede whynot Nybegynder
25. december 2003 - 15:31 #4
hmmm.. jeg har netop fundet ud af at du har ret... MEN at delphi ikke kan håndtere så lange kodelinier... løsningen blev at dele linierne op og "konstruere" strengen... skørt men det virker... løsning:

st := 'asfd asdf asdf';
st := st + 'bla bla bla bla.. ';
st := st 'asdf af adf asfd asfd';
Avatar billede hrc Mester
25. december 2003 - 23:44 #5
Har du en kodestump liggende? Det lyder sært. Du laver ikke noget i retning af dette:

var
  SomeCh : char;
  st : string;
begin
  (* mangler SetLength(st,100); *)
  for i := 0 to 99 do begin
    SomeCh := ...;
    st[i] := SomeCh;
  end;
Avatar billede whynot Nybegynder
26. december 2003 - 11:04 #6
jo du kan godt få lidt kode.. men som sagt den fylder en hel del.. og nej det giver ingen forskel om jeg sætter length af strengen eller ej.. jeg tror det er noget med længderne af linierne/antal af elementer på en kode linie i delphi - og igrunden ikke så meget om strengens længde.. men det er faktisk noget mystisk - jeg vil prøve at grave lidt i problemet og poste et svar senere. 

men som sagt her er der lidt kode..
Avatar billede whynot Nybegynder
26. december 2003 - 11:08 #7
Procedure gemOrdre_tildb(v_tabel: string; v_array_gentagelser: array of string; v_array_deltur: TMatrix_deltur; v_array_ordre : TMatrix_ordre);
var
tempslq: string;


tempslq:='INSERT INTO '+v_tabel+'_deltur (pickup_navn, pickup_adr, pickup_adrnr, pickup_postnr, pickup_postby, pickup_tlf, pickup_tlf2, pickup_fax, pickup_cvrnr, pickup_www, pickup_kontakt, pickup_kontakt_email, pickup_kontakt_tlf, pickup_kontakt_mobil, pickup_dato, pickup_tid';
          tempslq:=tempslq + ', dropoff_navn, dropoff_adr, dropoff_adrnr, dropoff_postnr, dropoff_postby, dropoff_tlf, dropoff_tlf2, dropoff_fax, dropoff_cvrnr, dropoff_www, dropoff_kontakt, dropoff_kontakt_email, dropoff_kontakt_tlf, dropoff_kontakt_mobil, dropoff_dato, dropoff_tid';
          tempslq:=tempslq + ', v_indeks, v_kmpris, v_Nkm, v_tillaeg, v_ventetid_min, v_ventetid_kr, v_notepris, note, pod, fragt_indeks, fragt, Nfragt)';
          tempslq:=tempslq + ' VALUES ("' + v_array_deltur[i,2] + '", "' + v_array_deltur[i,3] + '", "' + v_array_deltur[i,4] + '", "' + v_array_deltur[i,5] + '", "' + v_array_deltur[i,6] + '", "' + v_array_deltur[i,7] + '", "' + v_array_deltur[i,8] + '", "' + v_array_deltur[i,9] + '", "' + v_array_deltur[i,10] + '", "", "' + v_array_deltur[i,11] + '", "' + v_array_deltur[i,12] + '", "' + v_array_deltur[i,13] + '", "' + v_array_deltur[i,14] + '", "' + datetostr(strtodate(v_array_deltur[i,16])+gentagelse_frekvens[i,0]) + '", "' + v_array_deltur[i,15] +'"';
          tempslq:=tempslq + ', "' + v_array_deltur[i,17] + '", "' + v_array_deltur[i,18] + '", "' + v_array_deltur[i,19] + '", "' + v_array_deltur[i,20] + '", "' + v_array_deltur[i,21] + '", "' + v_array_deltur[i,22] + '", "' + v_array_deltur[i,23] + '","' + v_array_deltur[i,24] + '","' + v_array_deltur[i,25] + '", "", "' + v_array_deltur[i,26] + '","' + v_array_deltur[i,27] + '","' + v_array_deltur[i,28] + '","' + v_array_deltur[i,29] + '","' + datetostr(strtodate(v_array_deltur[i,31])+gentagelse_frekvens[i,1]) + '","' + v_array_deltur[i,30] + '"';
          tempslq:=tempslq + ', "' + tempvogn + '", "' + v_array_deltur[i,33] + '", "' + v_array_deltur[i,34] + '", "' + v_array_deltur[i,35] + '", "' + v_array_deltur[i,36] + '", "' + v_array_deltur[i,37] + '", "' + v_array_deltur[i,38] + '", "' + v_array_deltur[i,39] + '", "' + v_array_deltur[i,40] + '", "", "' + v_array_deltur[i,41] + '", ""';


....det er iøvrig en del af koden fra den procedure vi diskuterede i spørgsmål: http://exp.dk/spm/443795  :)
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